有关水晶报表的问题!请大家帮忙!

blueskyaaa 2005-01-11 10:33:38
水晶报表连接的是 Oracle 数据库的一个视图。当连接到另一个完全相同的数据库上时出错。两个数据的登录名不同。错误为视图中的一个字段无效.请大家帮忙!连接代码如下。
TableLogOnInfo logOnInfo = new TableLogOnInfo ();
ReportDocument oRpt = new ReportDocument();
oRpt.Load("c:\\CrystalReport2.rpt");
logOnInfo.ConnectionInfo.ServerName="***";
logOnInfo.ConnectionInfo.UserID="***";
logOnInfo.ConnectionInfo.Password="***";
-------
-------
传递了一些参数!
-------
oRpt.Database.Tables[0].ApplyLogOnInfo(logOnInfo);
CrystalReportViewer1.ReportSource=oRpt;
DataBind();

...全文
140 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
blueskyaaa 2005-01-14
  • 打赏
  • 举报
回复
这种方法好像不能改变水晶报表的连接参数和选择专家中自动产生的SQL语句.如果原来连接是Oracle数据库DB1,它将在选专家自动产生DB1.表名。当连接到其他数据库例如Db2时它还默认的是DB1.表名,请问该将它清楚?
xwdd129 2005-01-13
  • 打赏
  • 举报
回复
myConnection.Close();
myConnection.Dispose();
blueskyaaa 2005-01-13
  • 打赏
  • 举报
回复
To sunkevin(愚公):请问怎么清除? 具体说一下,谢谢!
blueskyaaa 2005-01-12
  • 打赏
  • 举报
回复
谢谢!我用的是视图,因为需根据几个表和传入的参数联合查询才能得到结果。在相同登录名的不同数据库转换时没有问题。但当连接到的数据库和原来做水晶报表时连接的参数不一样时,就会出现错误。数据库的登录ID和密码时从Ini文件读取的。读出的结果也正确。但调用oRpt.Database.Tables[0].ApplyLogOnInfo(logOnInfo)后再次取出连接信息(oRpt.Database.Tables[0].logOnInfo.ConnectionInfo)时发现其他连接信息都正确但PassWord却为空,不知为什么,请问该如何解决?
sunkevin 2005-01-12
  • 打赏
  • 举报
回复
当更换新的数据连接前,先把原来的数据连接关闭并清除。
blueskyaaa 2005-01-12
  • 打赏
  • 举报
回复
数据集我也试了。我用的是图表方式显示相关信息。所以在水晶报表中必须连接一个数据库对象。我连接的为一个视图。把查询得到的数据集传入后,还需传入登录参数否则会提示登录失败。但是当传入登录参数后,图表却把视图中所有的数据显示出来,而并非显示传入的数据集,请问该如何解决。
原来的那种方法原因我也已经找到,但不知该如何解决,产生错误的原因:报表会选择专家中的一次连接的数据名自动加到SQL语句中的前(没办法设置),当更换Oracle数据库时,它新产生的SQL语句还是加上原来的数据库名,所以找不到视图,产生错误。请问该如何解决?
小蕊_claudia 2005-01-12
  • 打赏
  • 举报
回复
学习。。。
lingyun_k 2005-01-12
  • 打赏
  • 举报
回复
没有用过你这种方法,麻烦,还是用数据集吧,先建一个数据集文件,然后从数据库中
把要用的的几张表拖进去,也可以自己定义结构,然后在水晶报表里面把这个数据集作为
数据源,至于参数也可以传入报表,在报表里面可以通过选择专家根据参数字段筛选数据
象你的这种做法是不可取的,数据库连接信息最好不要放在代码里面,用数据集的好处是
不管你用的是什么数据源,只要数据结构跟数据集的一样,你要做的只是修改数据库连接
信息和数据库访问组件
lingyun_k 2005-01-11
  • 打赏
  • 举报
回复
最好用数据集作为数据源
private void LoadReport(string cmdText)
{
string rptPath; //报表文件物理路径
ReportDocument rpt;
string[] tblNames; //定义数据集表名数组
Dataset.Mycs dsMycs; //报表所用到的数据集

rptPath = Request.PhysicalApplicationPath + @"Reports\Gdljxc.rpt";

rpt = new ReportDocument();

tblNames = new string[1];
tblNames[0] = "mycs";

dsMycs = new Dataset.Mycs();


//填充数据集
BI.DAL.OracleDac.FillDataset(CommandType.Text,cmdText,dsMycs,tblNames);

//绑定报表数据源
rpt.Load(rptPath);
rpt.SetDataSource(dsMycs);


this.CrystalReportViewer1.Visible = true;

this.CrystalReportViewer1.ReportSource = rpt;
this.CrystalReportViewer1.DataBind();
}
jakseng 2005-01-11
  • 打赏
  • 举报
回复
帮顶......

4,816

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 图表区
社区管理员
  • 图表区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧