WinForm中水晶报表怎么绑定数据?

private void Form_Main_Load(object sender, EventArgs e)
{
string conStr = "server=.;database=ReportDB;uid=sa;pwd=123456";
SqlConnection con = new SqlConnection(conStr);
con.Open();
DataSet1 ds = new DataSet1();
String sql = "select * from CustomerInfo c,ItemInfo i,RecordInfo r,TypeInfo t,UserInfo u where r.CustomerId=c.Id and r.FeeTypeId=t.Id and r.UserId=u.Id and i.Id=t.ItemId";
SqlDataAdapter sda = new SqlDataAdapter(sql, con);
sda.Fill(ds, "Table");
CrystalReport2 cr = new CrystalReport2();
cr.SetDataSource(ds);
crystalReportViewer1.ReportSource = cr;
}
这是我后台的代码,DataSet1 是自己建立的数据源,这样子为什么报表上绑定不出来数据,有没有高手来回答呀?

你看看你sda.Fill(ds,"Table")填充的表名 Table和水晶报表里绑定的DataSet的表名是否一致,如果不一致就修改成一致的追问

我绑定的DataSet1里面有5张表呀,SQL需要联合查询怎么办呢?

追答

几张表什么的没关系,只要你sda.Fill(ds,"Table")的表名称和你的报表的字段资源管理器里绑定的数据源的表名称一样就行了

追问

数据源里面有5张表,这里的Table应该怎么改呀?

追答

一般来说报表数据源的表应该和你查询的表是一样的,用的应该是同一个SQL语句生成的源,
你这种情况应该是当初做报表源的时候只想着匹配字段,没考虑到逻辑,你可以有两种方法修改,
第一个就是直接修改报表数据源,让5个表变成一个,用你代码里写的那个SQL语句,还有一种就是你代码里的SQL语句不用联合查询,根据你报表里的5个表分成五次查询,然后fill5次DataSet,表名就用水晶报表里一样的表名

温馨提示:答案为网友推荐,仅供参考
相似回答