- ベストアンサー
帳票出力に関するアクティブレポートの出力についての質問
- 質問者は、印刷ボタン側でデータセットへのデータ格納を行い、それをアクティブレポートで出力しようとしていますが、上手く表示されません。
- 質問者は、条件指定などでSQLを変化させたいため、印刷ボタン側でデータセットにデータ格納しています。
- 質問者は上記の記述だけでは動かないのかどうかを知りたく思っています。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
さてさて、これはデータセットのインスタンスがどこにあるか、という事になる。 まず状況の再確認から。データセットとしてデータを準備する印刷ボタン押下イベントがあり、ActiveReportsViewerが貼り付けられている受け取り側フォームがある。ActiveReportsのレポートは受け取り側フォームのインスタンス変数となっている。 恐らくDBからデータを取得してデータセットにFillするところまではうまくいっているのだろう。 では、受け取り側フォームの中に用意したrptのDataSourceメンバーに設定したmydsだが、さてこれは「何を指している」のだろうか。 rptのDataSourceメンバーとDataMemberメンバーに値を設定しているという事は、レポートはデータセットとバインドして出力していると推測できる(かどうかは正確には不明)。ところで、rptのDataSourceメンバーは自分自身のプロパティーに文字列(名前)でアクセスするために設定する。なので、データセットとのバインド(バウンド)の場合、わざわざプログラム上ではバインドされるデータセット名を指定するのではなく、型付のデータセットを用意してバインドし、そのデータセットインスタンスに対してデータを流し込んでやる方が良いだろう。 改めてソースに対してレビューを行うと、問題点は印刷ボタンイベントでnewしたDataSetのインスタンスをどうやってNewActiveReport3クラスのインスタンスであるrptに受け渡しているか、だ。そこに関する記述が一切ないため、本当に無い(本当に受け渡していない)のか、受け渡しのプログラムは用意しているけど省略したのかが分からない。 とりあえずrpt(NewActiveReport3クラス)を、アンバウンドでやるのかデータセットとのバウンドでやるのかをはっきりさせてはどうだろう。その方がどう直すかというヒントを得やすいのではないでしょーか。 大まかな方向性は以下のようになるのではないかと思われる。 ●アンバウンド→NewActiveReport3クラスにpublicなDataSetの変数mydsを用意し、データセットをnewしてDBからの内容をFillした後、rpt.mydsに代入する。NewActiveReport3クラスの各描画イベントでmydsのmyTableから1行ずつデータを取得して、レポートの各項目に値を埋めていく。 ●バウンド→NewActiveReport3クラスにpublicなDataSetの変数mydsを用意し、データセットをnewしてDBからの内容をFillした後、rpt.mydsに代入する。その後はレポートの機能を使って適当にやる。
補足
返答が遅くなりまして申し訳ありません。 頂いた内容をもとに作成したところ、ようやく動くようになりました!! ありがとうございました!