異なるデザインの複数のレポート(表紙と内容など)を合成して、一つのレポートにする方法は?
対象製品
ActiveReports 2.0J Standard
詳細
Pages コレクションの Insert メソッドを使用することで、異なるレポートからページ単位で追加することが可能です。下記のサンプルコードを参考にご検討ください。
サンプルコード
ただし、Insert メソッドで挿入されるのは、生成済みページのイメージです。
Field コントロールの Summary*** プロパティを使用してページ番号を出力していたとしても、合成後のページ数に合わせて、ページ番号が再計算される訳ではありません。
合成後のレポートにページ番号を出力する方法としては、Pages コレクションの DrawText メソッドを使用して、各ページ上に直接文字列を描画する方法がございます。下記のサンプルコードを参考にご検討ください。
サンプルコード
各メソッドの詳細につきましては、オンラインヘルプをご参照ください。
なお、ページとページを重ね合わせるような合成を行う場合には、Overlay メソッドを使用します。
下記「よくある質問」にあるサンプルが参考になりますので、こちらをご参照ください。
[製品 FAQ ID: 3063] 納品書、納品書控、請求書、受領書といったタイトルのみが異なる4つのレポートをA4用紙2枚に出力する方法はありますか?【※サンプル有り】
サンプルコード
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
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
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