水晶报表动态连接数据库

gongluyang 2008-05-11 12:57:56
现在碰到一个很刺手的问题:
我想设计一个报表,然后我想在程序运行时动态绑定到数据库,但做的了很久都没有做成功,
我先创建一个水晶报表,里面没有绑定到任何数据,只新建了一些我要显示的字段(未绑定字段),
然后我想在程序运行时把sql语句查出来的的东西放在dataset中,然后把dataset中的某一个字段对应
到我在报表中创建的未绑定的某一字段,但不知道这个怎么实现?????
网上有说用:
CrystalReportCustoms1.ReportDefinition.ReportObjects.Items("shipper_name_en");
但我试了一下,ReportObjects没有Items这个属性,请问这是怎么回事?

或者请问我需求的这种功能可以由别的方法实现的话,也请告知,谢谢



...全文
303 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
pfworld 2008-05-12
  • 打赏
  • 举报
回复
报表应该连接到business表!!
ch00696666 2008-05-12
  • 打赏
  • 举报
回复
看看吧
pfworld 2008-05-11
  • 打赏
  • 举报
回复
没有测试过!!你可以测试一下!!我是用多表一般是进行传参进行报表显示的!!因此没有遇到过多表PUSH!
gongluyang 2008-05-11
  • 打赏
  • 举报
回复
那如果我显示是多个表中的数据呢呢?,这个好像有点问题
pfworld 2008-05-11
  • 打赏
  • 举报
回复
而且我在BLOG里写了,如过要push模式一定要表名一样!!

如果你要显示的表是 business ,那么dabsnDetail.Fill(dsbsnDetail, "business "); 也要是business,才可以PUSH成功!
pfworld 2008-05-11
  • 打赏
  • 举报
回复
你好像用错了!!

this.crystalReportViewer1.ReportSource = this.reportDocument1;

crystalReportViewer1 是用来显示报表的控件,reportDocument1是用来装载报表的控件!!

如果要显示报表首先把报表load到reportDocument1内,然后把reportDocument1装载到crystalReportViewer1 内!
gongluyang 2008-05-11
  • 打赏
  • 举报
回复
我装载了的,我是手动装载的,不是在程序中装载的,
但是setdatasource的时候,就会报“该报表不包含表”的错误

strSQL = "SELECT bsnID from business WHERE bsnID='" + strBsnID + "'";

MySQLDataAdapter dabsnDetail = new MySQLDataAdapter(strSQL, FormMain.gConn);

DataSet dsbsnDetail = new DataSet();
dabsnDetail.Fill(dsbsnDetail, "bsnDetail");

//下面这一句,我用CrystalReportCustoms1.SetDataSource(dsbsnDetail.Tables["bsnDetail"]);也试过,但错误依旧
CrystalReportCustoms1.SetDataSource(dsbsnDetail);

crvCustoms.ReportSource = CrystalReportCustoms1;


请问可以告知一下您的qq或msn吗?,我的:84142601,msn:gongluyang@hotmail.com
pfworld 2008-05-11
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 gongluyang 的回复:]
另外,MySQLDriverCS可以当水晶报表的数据源吗?
[/Quote]

可以!!使用CrystalReportCustoms1显示要装载一个默认报表。



this.reportDocument1.Load(Application.StartupPath + "\\RptPack\\Rpt01.rpt");

/*
PUSH数据到Rpt01.rpt
*/
ReportDocument reportDocument1 = new ReportDocument()
reportDocument1.Load(Application.StartupPath + "\\piaoju.rpt"); //水晶报表绝对地址
ds = selectPJ();
reportDocument1.SetDataSource(ds); //填充数据到水晶报表

this.crystalReportViewer1.ReportSource = this.reportDocument1;
this.crystalReportViewer1.Zoom(90);

gongluyang 2008-05-11
  • 打赏
  • 举报
回复
另外,MySQLDriverCS可以当水晶报表的数据源吗?
gongluyang 2008-05-11
  • 打赏
  • 举报
回复
没有,这个不可以啊,他会报“该报表不包含表”的错误,因为我设计报表的时候,只生成的一张空白表,然后添加了一些未绑定字段。请问这样做是否可行???
pfworld 2008-05-11
  • 打赏
  • 举报
回复
http://blog.csdn.net/pfworld/archive/2007/07/29/1715299.aspx

这个应该可以解决你的问题!!
gongluyang 2008-05-11
  • 打赏
  • 举报
回复
问题应该是在设计的报表中,我设计的报表,没有添加任何表信息,只加入的一些未绑定的Text字段?但我不知道这个怎么实现我想要的功能??
gongluyang 2008-05-11
  • 打赏
  • 举报
回复
唉,问题依旧,我现在代码改成这样的了,问题还是一样
strSQL = "SELECT bsnID from business WHERE bsnID='" + strBsnID + "'";

MySQLDataAdapter dabsnDetail = new MySQLDataAdapter(strSQL, FormMain.gConn);

ReportDocument reportDocument1 = new ReportDocument();

string strPath = Application.StartupPath + "\\..\\..\\CrystalReport1.rpt";

reportDocument1.Load(strPath);

DataSet dsbsnDetail = new DataSet();

dabsnDetail.Fill(dsbsnDetail, "business");

reportDocument1.SetDataSource(dsbsnDetail);

crvCustoms.ReportSource = reportDocument1;

110,529

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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