マスター詳細レポートは、関連するデータを使用した単純なレポートです。データはマスターデータと詳細データに分かれています。マスターデータから詳細データを分離するには、データ領域内で詳細データをグループ化する方法と、個別に詳細レポートを作成し、それをサブレポート(Subreport)を使用して埋め込む方法があります。
マスター詳細レポートはSubreportコントロールを使用して作成できます。Subreportコントロールはマスターレポートに埋め込まれ、詳細レポートのプレースホルダーとして機能します。マスターレポートから詳細レポートに渡されたパラメータは、詳細レポートのデータセットをフィルタし、レコードを描画します。マスターと詳細の関係を確立するには、2つのレポートに共通のフィールドが必要であります。このフィールドは、マスターレポートから渡されたパラメーターに基づいて詳細レポートのデータをフィルタするために使用されます。
このチュートリアルは、ActiveReport WebデザイナでSubreportを使用してマスター-詳細レポートを作成する手順について説明します。
このチュートリアルを完了すると、次のようなレポートが作成されます。
[ユーザーフォルダ]\WebSamples\WebDesigner_MVCに格納されたWebDesigner_MVCサンプルを実行します。
Webデザイナがブラウザで開かれ、レポートのデザインが可能になります。デフォルトでは、空白のRDLレポートが表示されます。
従業員の注文の詳細をテーブル形式で表示するレポートを作成します。
データソースを追加する
データタブを開き、[データソース]の横の[+ 追加]アイコンをクリックします。
[データソースエディタ]ダイアログで、[名前]に「Orders」と入力します。
[種類]のドロップダウンリストを開き、「JSON Provider」を選択します。
[JSONデータ形式]で「外部ファイルまたはURL」を選択します。
[ファイル/URLの入力]に「https://demodata-jp.grapecity.com/northwind/odata/v1/Orders」と入力します。
[テスト接続]をクリックしてデータソースへの接続をテストし、[追加]をクリックします。
データセットを追加する
追加したデータソースの横にある[データセットの編集]をクリックします。
[データセットの編集]ダイアログで、データセットの名前を入力し、[クエリ]に「$.value[*]」と入力します。
[検証]をクリックしてバウンドフィールドを取得し、[OK]をクリックしてデータセットを追加します。
データセットの横の[フィールドを選択]アイコンをクリックします。
必要なフィールドを選択し、レポートのデザイン面にドラッグ&ドロップします。
列がフィールドにバインドされたテーブルが作成されます。詳細行のラベルは自動的にヘッダ行に追加されます。
または、最初にTableデータ領域をデザイナ面上にドラッグ&ドロップし、選択したフィールドを詳細行にドラッグ&ドロップすることもできます。
フッタ行の右端のセルに「{Sum(Freight)}」式を入力します。これにより、テーブルは次のようになります。
詳細レポートに非表示のパラメータを追加します。このパラメータは、詳細レポートのデータをフィルタするために、マスターレポートから渡されます。
従業員IDに基づいてデータをフィルタするレポートのパラメータを追加するには、次の手順を行います。
[データ]タブをクリックして、[パラメータ]セクションの[追加]をクリックします。 レポートパラメータ1というパラメータが追加されます。
レポートパラメータ1をクリックしてパラメータのプロパティを編集します。
[データタイプ]プロパティを「Integer」に設定します。
パラメータの[非表示]プロパティを「True」に有効します。
詳細レポートのデータは、マスターレポートから渡された従業員IDパラメータに従ってフィルタする必要があります。
従業員IDのパラメータ(レポートパラメータ1)に基づいてデータをフィルタするには、次の手順を行います。
新しいレポートを作成します。デフォルトでは、空白の RDLレポート が作成します。
データソースを追加する
データタブを開き、[データソース]の横の[+ 追加]アイコンをクリックします。
[データソースエディタ]ダイアログで、[名前]に「Employees」と入力します。
[種類]のドロップダウンリストを開き、「JSON Provider」を選択します。
[JSONデータ形式]で「外部ファイルまたはURL」を選択します。
[ファイル/URLの入力]に「https://demodata-jp.grapecity.com/northwind/odata/v1/Employees」と入力します。
[テスト接続]をクリックしてデータソースへの接続をテストし、[追加]をクリックします。
データセットを追加する
追加したデータソースの横にある[データセットの編集]をクリックします。
[データセットの編集]ダイアログで、データセットの名前を入力し、[クエリ]に「$.value[*]」と入力します。
[検証]をクリックしてバウンドフィールドを取得し、[OK]をクリックしてデータセットを追加します。
マスターレポートを作成するには、Listデータ領域を使用します。Listデータ領域には、データを表示するためのTextBoxを数個と、詳細レポートを表示するためのSubreportコントロール1つを配置します。Listデータ領域は、含んでいるすべてのレポートコントロールにバインドされているデータを繰り返し表示します。
レポートコントロール一覧からListデータ領域をデザイン面にドラッグ&ドロップします。
マスターレポートには、従業員の名前、役職、都市、国の情報が必要です。この情報を表示するには、3つのTextBoxコントロールをListコントロールにドラッグ&ドロップします。
詳細レポートをマスターレポートに埋め込むには、SubreportコントロールをListコントロールにドラッグ&ドロップします。次の画像のように、各コントロールの位置を調整します。
デザイン面に配置した各コントロールの階層が次のようになっていることを確認してください。階層は、デザイナの左上にある[エクスプローラ]をクリックすると表示することができます。
詳細レポートをマスターレポートに埋め込むには、次の手順を行います。
マスターレポートから詳細レポートに渡されるパラメータ(レポートパラメータ1)をフィルタとして使用するには、Subreportコントロールの[レポートパラメータ]プロパティを次のように設定します。
[プロパティ]タブで、[共通]セクションの[レポートパラメータ]プロパティを表示し、隣にある[+項目の追加]を選択します。
[値]フィールドに「{EmployeeId}」式を入力します。
上記のプロパティを設定した後、Subreportのレポートパラメータは次のようになります。
メモ:詳細レポートのパラメータ名は、サブレポートのパラメータと一致する必要があります。
メモ:必要に応じて、レポートに配置する各コントロールのサイズや位置を調整してください。
[テキスト]セクションの[水平方向の整列]プロパティおよび[垂直方向の整列]プロパティを使用して、テキストの整列を設定します。
[背景]セクションの[背景色]プロパティを「#f1f1f1」に設定して、ページヘッダの背景色を設定します。
[テキスト]セクションの[フォント名]プロパティを「Song」に設定します。
[テキスト]セクションの[サイズ]プロパティを「16」に設定して、[色]を「#3da7a8」に設定します。
[プレビュー]をクリックしてレポートの最終結果を表示します。マスターレポートから渡されたパラメータが、Subreportコントロールを使用して詳細を取得する方法を確認します。
レビューモードを終了するには、デザイナの左上にある[戻る]ボタンをクリックします。
[名前を付けて保存]をクリックして、レポートの名前を任意のものに変更し、[保存]をクリックします。