アクティブレポートを今仕事で使っているのでよく忘れてしまうため記録
メインレポート・サブレポートに値を渡す両方同じ書き方ができる
'レポート呼び出し側コード Dim rpt AS ReportsName 'データテーブルを渡す場合 rpt.Datasource = dt 'レポートに渡したいデータテーブル 'レポート内のコントロールに直接値を渡す場合 'Directcastするテキストボックスについてはレポートのテキストボックスと宣言しておく Directcast(rpt.Sections("Detail").Controls("TB_Ctrl"),TextBox).Text = "hogehoge"
Datasource にデータテーブルを渡している場合の受け取り方法
'DataInitializeのイベント 'DatatableのCol名を入力してどのデータを受け取るか教えてあげる TB_Ctrl.DateField = "HogeCol1"
後はデータテーブルの数勝手にレポートを作成してくれる
'メインレポートの場合 rpt.Run() 'サブレポートの場合 'デザインでのサブレポートに教えてあげる Me.SubCntrl.Report = rpt
応用?
メインレポートのデータテーブルをサブレポートにそのまま渡したりして、重複しているキー項目以外の場所を表示してもよいかもしれない
その場合はキーコントロールをGroupHeader1に設置してプロパティのGroupHeader1.DateFieldにデータのキーになる名前を設定してあげる
'メインレポートのデータをサブレポートに与える Dim dt as New DataTable dt = Directcast(Me.Datasource,DataTable) '何か加工したい場合このタイミングで行う Hoge1 = データテーブルの列名 Dim q =From r In dt.Enumerable() Where r.Item("Hoge1").ToString = TB_Contrl Select r Dim Choicedt = q.CopyToDataTable Dim Subrpt as SubReport1 Subrpt.Datasource = Choicedt
他にもスマートなやり方あるかもしれませんが誰かの参考になればいいかな
コメントを残す