我有一个包含2个子报告的主报告(试图包含2个)。目前我拥有的是......
CODE: '查询数据和其他未包含的代码......
Dim rds As ReportDataSource = New ReportDataSource("DataSet1", ds.Tables("DataTable2"))
ReportViewer1.LocalReport.DataSources.Clear()
ReportViewer1.LocalReport.DataSources.Add(rds)
AddHandler ReportViewer1.LocalReport.SubreportProcessing, AddressOf Me.SubreportProcessingEventHandler
Public Sub SubreportProcessingEventHandler(ByVal sender As Object, ByVal e As SubreportProcessingEventArgs)
Dim adapter1 As SqlDataAdapter
Dim sql As String = ""
Dim ds As New DataSet
Dim objConnection As New SqlClient.SqlConnection
objConnection = New SqlConnection(conn)
objConnection.Open()
最后选择第一个子报告的数据。在这里它正确显示数据!
SQL="SELECT A,B from tblA"
adapter1 = New SqlDataAdapter(sql, conn)
adapter1.Fill(ds, "DataTable3")
e.DataSources.Add(New ReportDataSource("DataSet1", ds.Tables("DataTable3")))
现在我正在为子报告2做同样的事情!但数据无法通过!
SQL ="SELECT C,D from tblB"
adapter1 = New SqlDataAdapter(sql, conn)
adapter1.Fill(ds, "DataTable4")
e.DataSources.Add(New ReportDataSource("DataSet1", ds.Tables("DataTable4")))
End sub
我为子报表2创建了具有确切字段的DataTable4。对于两个子报表,我基本上都做了同样的事情。
我需要多个处理程序吗?我做错了什么?
答案 0 :(得分:2)
查看您提供的代码,您根本不需要子报告。解决此问题的最简单(如果不一定是最有效的)方法是使用三个单独的查询,以及相应的DataTables和ReportDataSources。 更一般地,乍一看似乎要求子报告的情况实际上可以通过其他方式来解决,例如分组和/或使用具有一个或多个连接的查询。例如,规范Order和OrderLines报告可以使用连接查询以及保存FIRST关键字的文本框和订单信息以及显示订单行的Tablix来构建。 此外,我发现此链接很有用:http://www.gotreportviewer.com/subreports/index.html