作成日: 2018/02/28 最終更新日: 2018/02/28
文書種別
使用方法
詳細
異なるレポートを合成してひとつのレポートにする方法は、レポートの形式によって実現可否・方法が異なります。
詳細については、以下の内容をご覧ください。
詳細については、以下の内容をご覧ください。
なお、ページレポートの場合、1つのレポート内に複数のレイアウトを定義することは可能です。
この機能は、TableやListなどのデータ領域にレコードを出力する時、データが1ページに収まりきらず、複数のページにまたがって出力されるような状況で、2ページ目以降のレイアウトを変更したい場合に使用するものです。
■ページレポートで複数レイアウトを定義した時の出力例
ページレポートで複数レイアウトを定義する方法やサンプルについては、製品ヘルプの以下のトピックをご覧ください。
ActiveReportsユーザーガイド
- 概念
- ActiveReports for .NETデザイナの使用
- ページのタブ
- レポートの種類
- ページレポート
- ページレポート/RDLレポートの概念
- ページレポート/RDLレポートのレポートコントロール
- OverflowPlaceHolder(ページレポートのみ)
- サンプルとチュートリアル
- サンプル
- レポートギャラリー サンプル
- 「Report¥Page Reportフォルダ」
- 「Otherフォルダ」
- 「SalesReport」
- チュートリアル
- ページレポート/RDLレポートのチュートリアル
- レイアウト
- 複数のページでデータのオーバーフロー(ページレポートのみ)
RDLレポートにおけるサブレポートの使用方法については、以下のヘルプトピックや技術資料をご覧ください。
ActiveReportsユーザーガイド
- 概念
- ページレポート/RDLレポートの概念
- ページレポート/RDLレポートのレポートコントロール
- Subreport(RDLレポートのみ)
- サンプルとチュートリアル
- サンプル
- レポートギャラリー サンプル
- 「Report¥RDL Reportフォルダ」
- 「Othersフォルダ」
- 「Seiseki_Main/Seiseki_Sub」
- 「Reelsフォルダ」
- 「CustomerOrders/CustomerOrdersCoupon」
- チュートリアル
- ページレポート/RDLレポートのチュートリアル
- レイアウト
- RDLレポートでのサブレポート(RDLレポートのみ)
CodeZine|5分でわかるActiveReports帳票|RDLレポート
※旧バージョンである 9.0J をベースとした技術資料ですが、現行バージョンでも有効な内容となっております。
なお、セクションレポートをサブレポートして設定することはできません。サブレポートとして設定できるのは、RDLレポートまたはページレポートのみです。
詳細については、以下の内容をご覧ください。
セクションレポートの場合
セクションレポートの場合、異なるレポートを合成して1つのレポートとするにはいくつかの方法があります。詳細については、以下の内容をご覧ください。
- サブレポートとして構成する方法
SubReportコントロールを使用することで、セクションレポート内に別のセクションレポートを埋め込むことが可能です。
サブレポートの使用方法については、製品ヘルプの以下のトピックをご覧ください。
ActiveReportsユーザーガイド
- 概念
- セクションレポートの概念
- セクションレポートのレポートコントロール
- SubReport
- 基本操作
- セクションレポートの基本操作
- サブレポートの作成
- サンプルとチュートリアル
- サンプル
- セクションレポートのサンプル(Standard)
- Layout
- サブレポート サンプル
- チュートリアル
- セクションレポートのチュートリアル
- レイアウト
- サブレポート - XMLデータ
- サブレポート - 実行時のデータソース
- スクリプト
- スクリプトとサブレポート
- パラメータ
- サブレポートでパラメータの使用
なお、サブレポート自体は、親レポート内のコントロールの一つに過ぎません。そのため、サブレポートは基本的に「ページ」という概念から切り離されています。サブレポート側にページヘッダ/フッタを定義しても、それらが親レポート側に表示されないのはそのためです。
したがいまして、サブレポートにページに依存する要素(例:ページ数)は含められません。あらかじめご注意ください。(詳細については、製品ヘルプの「概念(SubReport)」をご覧ください。)
また、サブレポートとして設定できるのは、セクションレポートのみです。ページレポートやRDLレポートをサブレポートとして埋め込むことはできません。 - ページ単位で追加・挿入する方法
セクションレポートの場合、レポートの生成結果は、Document.Pagesプロパティ(PagesCollectionクラス)にページ単位で格納されています。
PagesCollectionクラスのAddやAddRange、InsertやInsertRangeメソッドを使用することで、生成済みのページを直接操作し、ページ単位で追加・挿入することが可能です。
■イメージ図
◆サンプルコード(VB.NET)
Dim rpt1 As New SectionReport1
Dim rpt2 As New SectionReport2
' それぞれのレポートを実行します。
rpt1.Run(False)
rpt2.Run(False)
' レポート「rpt1」の後ろに、レポート「rpt2」を追加します。
For i As Integer = 0 To rpt2.Document.Pages.Count - 1
rpt1.Document.Pages.Add(rpt2.Document.Pages(i).Clone())
Next
'' ※以下のようなコードでも同じ合成結果が得られます。
'rpt1.Document.Pages.AddRange(rpt2.Document.Pages.Clone())
' 合成後のレポートをプレビュー表示します。
Me.Viewer1.Document = rpt1.Document
◆サンプルコード(C#)
SectionReport1 rpt1 = new SectionReport1();
SectionReport2 rpt2 = new SectionReport2();
// それぞれのレポートを実行します。
rpt1.Run(false);
rpt2.Run(false);
// レポート「rpt1」の後ろに、レポート「rpt2」を追加します。
for (int i = 0; i < rpt2.Document.Pages.Count; i++)
{
rpt1.Document.Pages.Add(rpt2.Document.Pages[i].Clone());
}
//// ※以下のようなコードでも同じ合成結果が得られます。
//rpt1.Document.Pages.AddRange(
// (GrapeCity.ActiveReports.Document.Section.PagesCollection)
// rpt2.Document.Pages.Clone());
// 合成後のレポートをプレビュー表示します。
this.viewer1.Document = rpt1.Document;
なお、合成した結果は、プレビュー表示するだけでなく、1つのレポートとしてエクスポートすることや印刷することも可能です。
また、ページを挿入する位置や順番を調整すれば、両面印刷時の表面と裏面を別のレイアウトにすることや、最終ページから先頭ページへの逆順印刷することなども可能です。
ただし、合成できるのはセクションレポート同士のみです。ページレポートやRDLレポートを合成することはできません。
※レポートにページ番号を出力している場合、合成前の各レポート内でのページ番号が出力されます。合成後の全体を通したページ番号を出力したい場合は、関連情報の「生成後のセクションレポートに文字列や図形を描画する方法は?」をご参照ください。 - ページ同士を重ね合わせる方法
セクションレポートの場合、Document.Pagesプロパティに格納されているページ単位の生成結果に対して、Overlayメソッドを使用することで、別のページと重ね合わせることが可能です。
■イメージ図
◆サンプルコード(VB.NET)
Dim rpt1 As New SectionReport1
Dim rpt2 As New SectionReport2
' それぞれのレポートを実行します。
rpt1.Run(False)
rpt2.Run(False)
' レポート「rpt1」の各ページに、レポート「rpt2」の1ページ目を重ね合わせます。
For i As Integer = 0 To rpt1.Document.Pages.Count - 1
rpt1.Document.Pages(i).Overlay(rpt2.Document.Pages(0).Clone())
Next
' 合成後のレポートをプレビュー表示します。
Me.Viewer1.Document = rpt1.Document
◆サンプルコード(C#)
SectionReport1 rpt1 = new SectionReport1();
SectionReport2 rpt2 = new SectionReport2();
// それぞれのレポートを実行します。
rpt1.Run(false);
rpt2.Run(false);
// レポート「rpt1」の各ページに、レポート「rpt2」の1ページ目を重ね合わせます。
for (int i = 0; i < rpt1.Document.Pages.Count; i++)
{
rpt1.Document.Pages[i].Overlay(
(GrapeCity.ActiveReports.Document.Section.Page)
rpt2.Document.Pages[0].Clone());
}
// 合成後のレポートをプレビュー表示します。
this.viewer1.Document = rpt1.Document;
なお、合成した結果は、プレビュー表示するだけでなく、1つのレポートとしてエクスポートすることや印刷することも可能です。
ただし、一度合成したページを分ける(重ね合わせる前に戻す)ことはできません。
また、合成できるのはセクションレポート同士のみです。ページレポートやRDLレポートを合成することはできません。
ページレポートの場合
ページレポートでは、SubReportコントロールを使用することで、レポート上に別のレポートをサブレポートとして埋め込むことが可能です。ただし、埋め込めるレポートはRDLレポートのみです。ページレポート同士を合成する機能・方法は用意されておりません。なお、ページレポートの場合、1つのレポート内に複数のレイアウトを定義することは可能です。
この機能は、TableやListなどのデータ領域にレコードを出力する時、データが1ページに収まりきらず、複数のページにまたがって出力されるような状況で、2ページ目以降のレイアウトを変更したい場合に使用するものです。
■ページレポートで複数レイアウトを定義した時の出力例

ページレポートで複数レイアウトを定義する方法やサンプルについては、製品ヘルプの以下のトピックをご覧ください。
ActiveReportsユーザーガイド
- 概念
- ActiveReports for .NETデザイナの使用
- ページのタブ
- レポートの種類
- ページレポート
- ページレポート/RDLレポートの概念
- ページレポート/RDLレポートのレポートコントロール
- OverflowPlaceHolder(ページレポートのみ)
- サンプルとチュートリアル
- サンプル
- レポートギャラリー サンプル
- 「Report¥Page Reportフォルダ」
- 「Otherフォルダ」
- 「SalesReport」
- チュートリアル
- ページレポート/RDLレポートのチュートリアル
- レイアウト
- 複数のページでデータのオーバーフロー(ページレポートのみ)
RDLレポートの場合
RDLレポートの場合、SubReportコントロールを使用することで、レポート上に別のレポートをサブレポートとして埋め込むことが可能です。RDLレポートにおけるサブレポートの使用方法については、以下のヘルプトピックや技術資料をご覧ください。
ActiveReportsユーザーガイド
- 概念
- ページレポート/RDLレポートの概念
- ページレポート/RDLレポートのレポートコントロール
- Subreport(RDLレポートのみ)
- サンプルとチュートリアル
- サンプル
- レポートギャラリー サンプル
- 「Report¥RDL Reportフォルダ」
- 「Othersフォルダ」
- 「Seiseki_Main/Seiseki_Sub」
- 「Reelsフォルダ」
- 「CustomerOrders/CustomerOrdersCoupon」
- チュートリアル
- ページレポート/RDLレポートのチュートリアル
- レイアウト
- RDLレポートでのサブレポート(RDLレポートのみ)
CodeZine|5分でわかるActiveReports帳票|RDLレポート
※旧バージョンである 9.0J をベースとした技術資料ですが、現行バージョンでも有効な内容となっております。
なお、セクションレポートをサブレポートして設定することはできません。サブレポートとして設定できるのは、RDLレポートまたはページレポートのみです。
関連情報
旧文書番号
41503