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