winform 水晶报表,子报表如何显示数据??
我的winform项目里,先建有一个CrystalReport1.rpt,通过在print窗体上添加一个crystalReportViewer1控件来显示报表数据,代码如下:
int MemberId = 1;
da = new MySqlDataAdapter("select a.MemberId as MemberId,MemberName,Score,Type from member as a left join memscore as b on a.memberid = b.memberid where a.memberid =" + MemberId + "", conn);
da.Fill(Mydata, "MyReportDataTable");
crystalReport11.Load(Application.StartupPath + "CrystalReport1.rpt");
crystalReport11.SetDataSource(Mydata);
crystalReportViewer1.ReportSource = crystalReport11;
crystalReportViewer1.ShowPrintButton = false;
现在,我想要添加一个子报表,于是我又建了一个CrystalReport2.rpt,设计好样式之后在CrystalReport1.rpt中把CrystalReport2.rpt作为子报表添加进去,并且链接字段就是MemberId,可是怎么实现点击链接让子报表显示数据呢?
得到子报表数据的sql语句应该为:string sql="select * from assessmentinfo where MemberId=" + MemberId + "";
怎么给子报表绑定数据?
------解决方案--------------------bdb
------解决方案--------------------db
------解决方案--------------------楼上上楼
------解决方案--------------------不是很明白你的意图,只能帮顶,看楼下的怎么回答
------解决方案--------------------问阿泰或者按照我的说法,呵呵,再做一个
------解决方案--------------------
你之前的代码,用子报表冲掉了主报表。
实际上,你的子报表加入到主报表后,就成了主报表的一部分
只要在主报表代码段上稍微修改即可
C# code
int MemberId = 1;
da = new MySqlDataAdapter("select a.MemberId as MemberId,MemberName,Score,Type from member as a left join memscore as b on a.memberid = b.memberid where a.memberid =" + MemberId + "", conn);
da.Fill(Mydata, "MyReportDataTable");
//主报表部分
crystalReport11.Load(Application.StartupPath + "CrystalReport1.rpt");
crystalReport11.SetDataSource(Mydata);
//假设获得子记录集 ds1
//...
//将记录集传递给子报表
crystalReport11.Subreports[0].SetDataSource(ds1);
crystalReportViewer1.ReportSource = crystalReport11;
crystalReportViewer1.ShowPrintButton = false;
------解决方案--------------------
我顶!
------解决方案--------------------
你加个try看看到底报错是什么啊
第一次既然有结果了,第2次也应该 有,
会不会是上次的结果还在没有释放掉?难道要new一下?
------解决方案--------------------
我也用过水晶报表,子报表。但和你这个不太一样。学习下