お世話になります。
ActiveReport .NET3.0J SP1 PRO
を使っております。
Activereportにて、アンバウンドで以下のような帳票を
作ろうかと思っています。
(1)ヘッダ・フッタがあるレポートのDetail部分にサブレポートが
左右2つ並ぶ
(2)左側のサブレポートは固定数のデータを所定の位置に表示
≪縦の長さは固定≫
(3)右側のサブレポートは可変数のレコードデータを縦に並べる
(4)1ページに右側のサブレポートに表示できる数は任意で決められている
(5)右側のサブレポートのレコード数が1ページに表示できる数を超えたら
次のページに表示する
(6)その場合、新しいページは右側のサブレポートの中身とページ番号以外は
1ページ目とまったく同じにする
このような場合にどういう構成にしたら良いのかまったくわかりません。
レポート数は、サブ含めて全部で3つありますが
→Me.Detail.NewPage = NewPage.After
この改ページ処理を、どのレポートの、どのイベントに、どのタイミングで入れるのが適切なのでしょうか?
※ 開発環境
Windows XP Pro SP2
Visual Studio 2005 (Visual Basic 2005)
以上、アドバイスをどうぞ宜しくお願いします。
下記へマルチポストされています。
http://hanatyan.sakura.ne.jp/vbnetbbs/wforum.cgi?mode=allread&no=8374&page=0
もともとレポート関連でのレスは付き辛いんですが、
GrapeCityはホームページ上に製品ごとのFAQ検索
ページがあるので、参考にしてみて下さい。
http://www.grapecity.com/japan/support/product_faq_search.asp
参考リンク さん
返信を頂き、ありがとうございます。
ホームページは存じておりましたが、その時はお目当てのものが
見つかりませんでした。
しかしながら検索が不十分であった可能性もありますので、
今一度、GrapeCityさんのホームページで根気よく探してみたいと思います。
示して下さってありがとうございます。
ActiveReportsでは出力結果が設定した用紙サイズに収まらない場合、
自動的に改ページが行われたと思います。
・・・何もしないで出力した結果はどうなりましたか?
通りすがりさん
お手数をおかけします。
強制的に改ページを指定しないで、大量のデータを出力した場合ですが、
右側のサブレポートの中のデータが、あらかじめ行数が決まっているサブレポート
の枠を突き破って、フッターまでデータが進入しました。
それ以上のデータは、次ページに進みますが、そこでは左側のサブレポートや、
ベースのレポートのDetailに記述してある各ラベルを無視して
右側のサブレポートの内容のみが、ポツンと表示されるだけです。
つまり右側のサブレポートだけが、次ページに表示されるのです。
ということは、行数を決めておいて改ページ?
http://www.grapecity.com/japan/support/Search/FaqContent.asp?id=24163
示して下さったヘルプにある通り、
→Me.Detail.NewPage = NewPage.After
がキーになると思うのですが、
サブレポートを使わないレポートなら問題ないですが、
サブレポートを使用した場合はどういうタイミングで
使うのがいいか・・・
中々上手くいかないです。
サブレポート内で記述しても、ページを重ねるごとに
サブレポートだけが一人歩きして、それしか表示されませんでした。
(つまり、次ページはサブレポートのみしか表示されない)
かといって、ベースレポートに記述しても、サブレポートの
Detail処理はサブレポートしか認識していないので、
改ページのタイミングが分からないのです。
かなり難しい課題ですみません。
そこまで使ったことはないので、
『activereport サブレポート』のキーワードでググって
検索できるページを参考にしてみては?
http://dobon.net/vb/bbs/log3-16/9313.html
http://codezine.jp/article/detail/1752?p=3
通りすがり さん
色々とリンクを示してくださり、ありがとうございます。
リンク先を参考にして、周りの仲間と現在色々試しています。
また、何か進展がありましたらここに書き込みます。
お世話になっています。
調査した結果です。
別部署で、昔帳票をサブレポートで作っていた事があるらしいのですが、
そのレポートを見た人によると、少し複雑なやり方になるという事でした。
まず、一旦DBを見に行って表示する全てのデータを取得し、
その量をあらかじめ調べてページ数を算出します。
そして、実際にベースレポートにてそのページ数を制御しながら
帳票を作成するという方法らしいです。
(推測ですが、お教え頂いた上方のリンク先の解決方法で「ワークテーブル」
と言うのがそれにあたるかもしれません)
その帳票は手元にないので、詳細は分かりませんが、
ロジックとしてはこんな感じで、これを採用するかどうかはまだ分かりません。
お世話になってます。
現在どういう方法が適切かを検討しておりますが、
結論が出るのがかなり先になり、長くなりそうなので、
いったんここで締め切りとさせて頂きます。
アドバイスを頂いた方にはお手数をおかけし、感謝します。
助けて頂きどうもありがとうございました。
その後の結果報告です。
方法として、サブレポートにてデータを取得する際に
データが次のページに渡るのかどうかをフラグを持たせておいて、
そのフラグを見てページ送りするかどうかを決定するようにしました。
フラグを見て続けるかどうかの判断はベースレポートのFetchDataイベントで行い
ページ送りをするイベントはベースレポートのDetail_Formatイベントで実行しています。
これにより、サブレポートのデータが規定値以上になる場合はページが続きました。
御回答下さった方々には、御礼申し上げます。
どうもありがとうございました。
ツイート | ![]() |