異なるデザインの複数のレポート(表紙と内容など)を合成して、一つのレポートにする方法は?

文書番号 : 10913     文書種別 : 使用方法     最終更新日 : 2005/03/03
文書を印刷する
対象製品
ActiveReports 2.0J Standard
詳細
Pages コレクションの Insert メソッドを使用することで、異なるレポートからページ単位で追加することが可能です。下記のサンプルコードを参考にご検討ください。

サンプルコード
 Dim rpt1 As New ActiveReport1  'レポート1
 Dim rpt2 As New ActiveReport2  'レポート2
 Dim i As Integer

 ' それぞれのレポートを生成します。
 rpt1.Run False
 rpt2.Run False

 ' rpt1にrpt2の内容を追加します。
 For i = 0 To rpt2.Pages.Count - 1
  rpt1.Pages.Insert rpt1.Pages.Count, rpt2.Pages(i)
  DoEvents
 Next i
  
 rpt1.Printer.FromPage = 1
 rpt1.Printer.ToPage = rpt1.Pages.Count
 rpt1.Printer.MaxPage = rpt1.Pages.Count
  
 rpt1.Pages.Commit
 rpt1.Show

 Set rpt2 = Nothing

ただし、Insert メソッドで挿入されるのは、生成済みページのイメージです。
Field コントロールの Summary*** プロパティを使用してページ番号を出力していたとしても、合成後のページ数に合わせて、ページ番号が再計算される訳ではありません。

合成後のレポートにページ番号を出力する方法としては、Pages コレクションの DrawText メソッドを使用して、各ページ上に直接文字列を描画する方法がございます。下記のサンプルコードを参考にご検討ください。

サンプルコード
 Dim rpt1 As New ActiveReport1  'レポート1
 Dim rpt2 As New ActiveReport2  'レポート2
 Dim i As Integer

 ' それぞれのレポートを生成します。
 rpt1.Run False
 rpt2.Run False

 ' rpt1にrpt2の内容を追加します。
 For i = 0 To rpt2.Pages.Count - 1
  rpt1.Pages.Insert rpt1.Pages.Count, rpt2.Pages(i)
  DoEvents
 Next i

 ' ページ番号を描画します。
 For i = 0 To rpt1.Pages.Count - 1
 rpt1.Pages(i).DrawText _
  i + 1, 10.5 * 567, 28.7 * 567, 1000, 500
 Next i

各メソッドの詳細につきましては、オンラインヘルプをご参照ください。

なお、ページとページを重ね合わせるような合成を行う場合には、Overlay メソッドを使用します。
下記「よくある質問」にあるサンプルが参考になりますので、こちらをご参照ください。

 [製品 FAQ ID: 3063] 納品書、納品書控、請求書、受領書といったタイトルのみが異なる4つのレポートをA4用紙2枚に出力する方法はありますか?【※サンプル有り】
キーワード
HowTo デザイン・レイアウト

この文書は、以前は次のFAQ IDで公開されていました : 3095