2008.06.18

CrystalReportで複数の帳票を同時に出力する

CystalReportで複数の帳票を一度に出力する方法を紹介します。

ActiveReportだと[メインとなるレポート].Document.Pages.AddRange([別のレポート].Document.Pages)とやることで、
メインのレポートに、追加したいレポートを設定できます。

CrystalReportでは上記のような機能がどうも無いようなので、
いろいろ試してみたところ、下記の方法で出来ることがわかりました。

まずは必要な帳票をそれぞれ作成します。

メインとなる帳票にグループフッターを追加します。
追加したグループフッターで右クリック→挿入→サブレポート選択します。

そうするとマウスのところに枠線みたいなのが表示されるので、
それを追加したグループフッター内に設定します。

ここで、追加したグループフッターの縦幅を1ページのサイズに広げます。
どうもグループフッターのサイズに追加したレポートが収まるようになっているので、
グループフッターの縦幅が小さいと出力したときに、
追加したレポートがグループフッターの縦幅までしか表示されなくなってしまいます。

追加したグループフッターのセクションエキスパートで、
非表示の条件、出力前に改ページにチェックを入れて、条件を設定します。

ActiveReportのようにそれぞれの帳票にデータをセットすることが出来ないので、
この場合は、必要な情報を一つのDataSetに保持する必要があります。

私が作成した際は、
ヘッダーの情報を表示するときは区分="1"、明細なら区分="2"と区分をもたせていたので、
条件は下記のようになります。

// 非出力条件
WhilePrintingRecords;
{区分} = '1'

// 出力前に改ページ条件
WhilePrintingRecords;
{区分} = '2'

このようにすることで、一枚の帳票で複数の帳票を出力することが出来ます。

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

photo
jnakamura