アクティブレポートを今仕事で使っているのでよく忘れてしまうため記録
メインレポート・サブレポートに値を渡す両方同じ書き方ができる
'レポート呼び出し側コード
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
他にもスマートなやり方あるかもしれませんが誰かの参考になればいいかな


コメントを残す