日期:2014-05-20  浏览次数:20799 次

请教如何将多个数据源 传给水晶报表?
能否将多个数据源同时传给水晶报表?

主要目的:在一张水晶报表中显示多个无关联的表(表之间没有任何字段的数据可以关联),为了节约纸张和方便查看,所以将多个无关联的数据打印在一张纸上。

目前在报表中打印一个表中的数据没有问题,实现方法如下:
1、在水晶报表中新建一个数据集,将数据库或者视图拖到设计界面,产生一个xsd的文件。
2、新建一个空白报表,在数据库专家ADO.NET数据集里选择以上创建的xsd作为数据源。
3、在字段管理器中可以看到字段已经加进来,将需要打印的字段拖到报表设计页面上,排版。
4、在程序中查询数据库,产生一个DataTable,并将它传给水晶报表。

以下是一些代码片段:(VS2005+集成水晶报表 VB代码)
1、查询数据库,并产生一个DataSet
  Dim DS As New DataSet
  Dim strSQL As String
  Dim ConnStr As String = "数据库连接字符串"
  strSQL = "select * from Tb"
  Dim myConnection As New SqlConnection(ConnStr)
  Dim mycommand As New SqlDataAdapter(strSQL, myConnection)
  mycommand.Fill(DS)
2、将报表文件和数据源传给水晶报表:
  reportDocument1.Load("测试.rpt")
  reportDocument1.SetDataSource(DS.Tables(0))
  CrystalReportViewer1.ReportSource = reportDocument1

问题:
1、以上代码是将一个DataTable传给水晶报表,请问如果有多个DataTable需要传给水晶报表应该怎么做?我试着将DS直接传给水晶报表,可是没有任何数据显示。如果能将多个数据集同时传给水晶报表,我想在报表中显示多个无关联的表就很容易了。
2、以上xsd数据集的创建是不是有问题? 除了直接将表或视图拖到界面的方法还有没有其它的方法能快速创建数据集?

感谢各位有经验的朋友指点一下。


------解决方案--------------------
呵呵。看来我的那个文章还是得写啊。

------解决方案--------------------
请参考
http://topic.csdn.net/u/20090423/01/df01d702-5f29-437b-abb8-107dc3be9b2a.html