1
我有一个包含2个子报表的主报表(试图包含2个报表)。目前,我有什么是这个...使用rdlc报告添加子报表处理程序vb.net
- 在按钮点击我查询数据并填充主报告-Report1
- 一旦该数据填充我加了的AddHandler来填充报表1的数据 - 这个伟大的工程! - 现在我想查询的数据为第二子报表以同样的方式,但它没有显示我的任何数据...
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。我基本上为两个子报表都做同样的事情。
我需要多个处理程序吗?我究竟做错了什么?
iirc参数在eventargs中传递,它允许您确定调用需要什么,即哪个子报表正在调用其数据。但是,看看你给出的代码(虽然我很欣赏它的简化),但它看起来并不像你需要子报表 - 只有多个数据源。我的意思是,通常在'e'中传递一个参数,该参数有效地充当WHERE子句,以便子报表向父报表中的数据显示相关的子数据,而您似乎正在拉动无关的数据。 – peterG
@peterg - 我需要查询数据 - 我实际上做了很多左连接,因为我将很多我的值保存为ID - 所以当显示它时,我需要将我的参考表格左键加入以显示文本 – BobSki
@peterG - 现在它是相关的数据 - 这一切都是为了相同的CLIENTTID。该字段出现在我的所有表格中。我只是不知道如何让这个工作。这是我第一次使用.rdlc报告。我发现这适用于我的其中一个报告,所以我继续为所有人做。我更喜欢女士Access用户 – BobSki