使用rdlc报告vb.net为子报告添加处理程序

时间:2016-12-16 16:39:00

标签: vb.net

我有一个包含2个子报告的主报告(试图包含2个)。目前我拥有的是......

  • 在按钮上单击我查询数据并填充主报表-Report1
  • 填充此数据后,我添加了一个AddHandler来填充第一个子报告的数据 - 这很有效! - 现在我试图以相同的方式查询第二个子报告的数据,但它没有显示我的任何数据......

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。对于两个子报表,我基本上都做了同样的事情。

我需要多个处理程序吗?我做错了什么?

enter image description here

1 个答案:

答案 0 :(得分:2)

查看您提供的代码,您根本不需要子报告。解决此问题的最简单(如果不一定是最有效的)方法是使用三个单独的查询,以及相应的DataTables和ReportDataSources。 更一般地,乍一看似乎要求子报告的情况实际上可以通过其他方式来解决,例如分组和/或使用具有一个或多个连接的查询。例如,规范Order和OrderLines报告可以使用连接查询以及保存FIRST关键字的文本框和订单信息以及显示订单行的Tablix来构建。 此外,我发现此链接很有用:http://www.gotreportviewer.com/subreports/index.html

相关问题