2016-12-16 26 views
1

私は2つのサブレポート(2を含む)を持つメインレポートを持っています。これはGREATに動作します - 現在、私が持っているもの、私はデータを照会し、このデータは、私が第一サブレポートのデータを移入するのAddHandlerを追加投入されると、メインレポート-Report1 rdlcレポートを含むサブレポートのハンドラを追加します。

  • を取り込むクリック...ボタンで

    • これです! 私は第二サブレポートのために同じようにデータを照会しようとしているが、それは...データの私のいずれかを示していない-Now

    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 - これは関連するデータです - 同じCLIENTIDのすべてです。このフィールドはすべてのテーブルに表示されます。私はちょうどこれを動作させる方法を知らない。 .rdlcレポートを扱うのは初めてのことです。私はこれが私のレポートの1つのために働くことがわかったので、すべての人のためにそれを続けています。私はAccessのユーザーの方です。 – BobSki

    答えて

    2

    、あなたは、すべてのサブレポートを必要としません。これに取り組む最も単純な方法(必ずしも最も効率的であるとは限りません)は、対応するDataTableとReportDataSourcesを使用して3つの個別のクエリを使用することです。 一見したところで、サブレポートを呼び出すように見える状況は、実際にはグループ化や1つ以上の結合によるクエリの使用などの他の手段で解決できます。たとえば、標準Order + OrderLinesレポートは、Join情報をFIRSTキーワードと、注文情報を表示するTablixを持つテキストボックスと組み合わせて使用​​して作成することができます。 また、このリンクが役立ちました:http://www.gotreportviewer.com/subreports/index.html

    関連する問題