XMLデータの処理方法は、他のデータ類とは異なります。このチュートリアルでは、親レポートでXMLデータソースに連結されたサブレポートの設定方法を紹介します。
このトピックでは、以下のタスクを行います。
- Visual StudioプロジェクトにActiveReportを追加する
- 親レポートをXMLデータソースに接続する
- 親レポートのレイアウトを作成する
- 子レポートのレイアウトを作成する
- 子レポートのインスタンスを作成する
- 親レポートのデータのサブセットを子レポートに渡す
- レポートを表示する
 |
メモ: このチュートリアルでは、Customerデータ(Customer.xml)を使用しています。Customerデータ(..ActiveReportsNET9\Data\Customer.xml)へのアクセス権限が必要です。 |
チュートリアルを完了すると、次のようなレポートが作成されます。
設計時のレイアウト
実行時のレイアウト
Visual StudioプロジェクトにActiveReportを追加する
- Visual Studioで新規プロジェクトを開きます。
- [プロジェクト]メニューから[新しい項目の追加]を選択します。
- [新しい項目を追加]ダイアログ から[ActiveReports 9.0 セクションレポート(コード)]を選択し、ファイル名を「rptMain」に変更します。
- [追加]ボタンをクリックします。
- [プロジェクト]メニューから[新しい項目の追加]を選択します。
- [新しい項目を追加]ダイアログ から [ActiveReports 9.0 セクションレポート(コード)]を選択し、ファイル名を「rptSub」に変更します。
- [追加]ボタンをクリックします。
詳細は、「プロジェクトにレポートを追加する」参照してください。
親レポート(rptMain)をXMLデータソースに接続する
- レポートのDetailセクションのバンドから、データソースのアイコンをクリックします。

- [レポートデータソース]ダイアログでは、[XML]タブを選択し、[ファイルURL]の横にある(...)ボタンをクリックします。
- [ファイルを開く]ダイアログでは、Customer.xmlを参照し、[開く]ボタンをクリックします。(デフォルトではCustomer.xmlは「..ActiveReportsNET9\Data\customer.xml」に配置されています。)
- [レコードセットパターン]フィールドに、
[//CUSTOMER]
と入力します。
- [OK]をクリックします。
親レポート(rptMain)のレイアウトを作成する
- デザイナ面より、pageHeaderを選択し、[プロパティ]ウィンドウからHeightプロパティを「0.3」に設定します。
- デザイナ面より、グレーの領域をクリックし、[プロパティ]ウィンドウからPrintWidthプロパティを「6.5」に設定します。
- デザイナ面より、Detailセクションを選択し、[プロパティ]ウィンドウからCanShrinkプロパティを「True」に設定し、空白スペースを削除します
- ツールボックスから、PageHeaderセクション上に「Label」をドラッグし、[プロパティ]ウィンドウから以下のプロパティを設定します。
プロパティ名 |
値 |
Text |
顧客別の注文 |
Location |
0, 0 in |
Size |
6.5, 0.25 in |
Font Size |
14 |
Alignment |
Center |
- ツールボックスからDetailセクション上に以下のコントロールをドラッグし、[プロパティ]ウィンドウから以下のプロパティを設定します。
TextBox1
プロパティ名 |
値 |
DataField |
NAME |
Location |
1.2, 0 in |
Size |
2, 0.2 in |
Label1
プロパティ名 |
値 |
Text |
顧客名 |
Location |
0, 0 in |
Size |
1.2, 0.2 in |
Font Bold |
True |
Label2
プロパティ名 |
値 |
Text |
注文: |
Location |
1.2, 0.25 in |
Size |
1, 0.2 in |
Font Bold |
True |
Subreport
プロパティ名 |
値 |
Location |
2.3, 0.25 in |
Size |
4, 1 in |
子レポート(rptSub)のレイアウトを作成する
- デザイナ面より、Detailセクションを選択し、[プロパティ]ウィンドウから以下のプロパティを設定します。
プロパティ名 |
値 |
CanShrink |
True |
BackColor |
LightSteelBlue |
 |
ヒント: レポートの最終的な出力結果に色を適用したくない場合であっても、サブレポートの背景に色を使用することで、レイアウト関連の問題を容易に見つけることができます。 |
- デザイナ面では、pageHeaderやpageFooterセクションを選択し、[削除]をクリックします。サブレポートはこのセクションを描画しないので、これらのセクションを削除すると処理時間を削減できます。
- ツールボックスから、Detailセクションに以下のコントロールをドラッグし、[プロパティ]ウィンドウから以下のプロパティを設定します。
TextBox1
プロパティ名 |
値 |
DataField |
TITLE |
Name |
txtTitle |
Location |
0, 0 in |
Size |
2.9, 0.2 in |
TextBox2
プロパティ名 |
値 |
DataField |
PRICE |
Name |
txtPrice |
Location |
3, 0 in |
Size |
1, 0.2 in |
Alignment |
Right |
OutputFormat |
$#,##0.00 (またはダイアログから通貨を選択します) |
子レポート(rptSub)の新インスタンスを作成する
 |
注意: Formatイベントでサブレポートの新しいインスタンスを作成しないでください。Formatを実行するごとに新しいサブレポートが作成されるので、大量のメモリが消費されます。 |
Visual Basic
- [rptMain]のデザイナ面を右クリックし、[コードの表示]を選択します。
- レポートのコードビューの上部左側のドロップダウンキーをクリックし、rptMainイベントを選択します。
- レポートのコードビューの上部右側のドロップダウンキーをクリックし、「ReportStart」を選択し、レポートのReportStartイベントのイベント処理メソッドを作成します。
- ハンドラに以下のコードを追加し、rptSubの新しいインスタンスを作成します。
Visual Basicコード(ReportStartイベントの上に貼り付けます) |
コードのコピー
|
Dim rpt As rptSub
|
Visual Basicコード(ReportStartイベント内に貼り付けます) |
コードのコピー
|
rpt = New rptSub
|
C#
- 「rptMain」の下にあるグレーの領域を選択します。
- [プロパティ]ウィンドウにあるイベントのアイコンをクリックし、レポートのイベントの一覧を表示します。
- ReportStartイベントをダブルクリックし、レポートのReportStartイベントのイベント処理メソッドを作成します。
- ハンドラに以下のコードを追加し、rptSubの新しいインスタンスを作成します。
C#コード(ReportStartイベントの上貼り付けます) |
コードのコピー
|
private rptSub rpt;
|
C# コード(ReportStartイベント内に貼り付けます) |
コードのコピー
|
rpt = new rptSub();
|
親レポートのデータのサブセットを子レポートに渡す
親レポートのデータのサブセットを子レポートに渡すには、以下の手順を行います。
- rptMainのデザイナ面のDetailセクション上をダブルクリックし、Detail_Formatイベントのイベント処理メソッドを作成します。
- ハンドラにコードを追加し、以下の処理を実装します。
- 新規のGrapeCity XMLデータソースを作成する
- 新しいデータソースをrptMainのデータソースとして型キャストし、ノードリストを"ORDER/ITEM"フィールドに設定する
- SubreportコントロールにrptSubを表示する
- サブレポートに新しいデータソースを渡す
Visual Basic
Visual Basicコード(Formatイベント内に貼り付けます) |
コードのコピー
|
Dim xmlDS As New GrapeCity.ActiveReports.Data.XMLDataSource
xmlDS.NodeList = CType(CType(Me.DataSource, GrapeCity.ActiveReports.Data.XMLDataSource).Field("ORDER/ITEM", True), System.Xml.XmlNodeList)
rpt.DataSource = xmlDS
SubReport1.Report = rpt
|
C#
C#コード(Formatイベント内に貼り付けます) |
コードのコピー
|
GrapeCity.ActiveReports.Data.XMLDataSource xmlDS = new GrapeCity.ActiveReports.Data.XMLDataSource();
xmlDS.NodeList = (System.Xml.XmlNodeList)((GrapeCity.ActiveReports.Data.XMLDataSource) this.DataSource).Field("ORDER/ITEM", true);
rpt.DataSource = xmlDS;
subReport1.Report = rpt;
|
レポートを表示する
- 設計時にレポートを表示するには、プレビュータブをクリックします。
または
関連トピック