CystalReportで複数の帳票を一度に出力する方法を紹介します。
ActiveReportだと[メインとなるレポート].Document.Pages.AddRange([別のレポート].Document.Pages)とやることで、
メインのレポートに、追加したいレポートを設定できます。
CrystalReportでは上記のような機能がどうも無いようなので、
いろいろ試してみたところ、下記の方法で出来ることがわかりました。
まずは必要な帳票をそれぞれ作成します。
メインとなる帳票にグループフッターを追加します。
追加したグループフッターで右クリック→挿入→サブレポート選択します。
そうするとマウスのところに枠線みたいなのが表示されるので、
それを追加したグループフッター内に設定します。
ここで、追加したグループフッターの縦幅を1ページのサイズに広げます。
どうもグループフッターのサイズに追加したレポートが収まるようになっているので、
グループフッターの縦幅が小さいと出力したときに、
追加したレポートがグループフッターの縦幅までしか表示されなくなってしまいます。
追加したグループフッターのセクションエキスパートで、
非表示の条件、出力前に改ページにチェックを入れて、条件を設定します。
ActiveReportのようにそれぞれの帳票にデータをセットすることが出来ないので、
この場合は、必要な情報を一つのDataSetに保持する必要があります。
私が作成した際は、
ヘッダーの情報を表示するときは区分="1"、明細なら区分="2"と区分をもたせていたので、
条件は下記のようになります。
// 非出力条件
WhilePrintingRecords;
{区分} = '1'
// 出力前に改ページ条件
WhilePrintingRecords;
{区分} = '2'
このようにすることで、一枚の帳票で複数の帳票を出力することが出来ます。