2016-12-16 72 views
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。我基本上为两个子报表都做同样的事情。

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

enter image description here

+0

iirc参数在eventargs中传递,它允许您确定调用需要什么,即哪个子报表正在调用其数据。但是,看看你给出的代码(虽然我很欣赏它的简化),但它看起来并不像你需要子报表 - 只有多个数据源。我的意思是,通常在'e'中传递一个参数,该参数有效地充当WHERE子句,以便子报表向父报表中的数据显示相关的子数据,而您似乎正在拉动无关的数据。 – peterG

+0

@peterg - 我需要查询数据 - 我实际上做了很多左连接,因为我将很多我的值保存为ID - 所以当显示它时,我需要将我的参考表格左键加入以显示文本 – BobSki

+0

@peterG - 现在它是相关的数据 - 这一切都是为了相同的CLIENTTID。该字段出现在我的所有表格中。我只是不知道如何让这个工作。这是我第一次使用.rdlc报告。我发现这适用于我的其中一个报告,所以我继续为所有人做。我更喜欢女士Access用户 – BobSki

回答

2

望着你给的代码,你不需要子报表在所有。最简单的(如果不一定是最有效的)解决方法是使用三个单独的查询,以及相应的DataTables和ReportDataSources。更一般地说,乍一看似乎要求子报表的情况实际上可以通过其他方式解决,例如分组和/或使用具有一个或多个联接的查询。例如,规范的订单加OrderLines报告可以使用连接查询结合按照订单信息持有FIRST关键字的文本框和显示订单行的Tablix来构造。 此外,我发现此链接有帮助:http://www.gotreportviewer.com/subreports/index.html