[]
マスター詳細レポートは、関連する詳細がマスターレコードごとに繰り返されるようにデータが表示されます。マスター詳細レポートでは、ネストされたデータ領域が異なるデータセットからデータを取得するケースも実現できます。
異なるデータセットにバインドしたネストされたデータ領域にデータを表示するには、マスターと詳細(親子)の関係を確立するために共通のフィールドは必要です。このフィールドは、親データ領域から渡された値に基づいて子データ領域のデータをフィルタするために使用されます。
このチュートリアルでは、2つの異なるデータセット(サプライヤーと製品)にバインドされた2つのネストされたTableデータ領域を使用します。 「SupplierId」は、両方のデータセットの共通フィールドであり、子テーブルのフィルターとしても機能します。
このチュートリアルを完了すると、次のようなレポートが作成されます。
新しいレポートを作成します。デフォルトでは、空白の RDLレポート が作成されます。
データソースに接続します。
**[データ]タブをクリックして、[データソース]の[+ 追加]**をクリックします。
**[データソースの編集]ダイアログでは、次のURLをリモートJSONプロバイダの[エンドポイント]**に指定します。
https://demodata-jp.grapecity.com/northwind/api/v1/
データセットを追加します。
Dataset_Suppliers:
追加したデータソースの**[新規データセット]をクリックして、[名前]を「Dataset_Suppliers」**に設定します。
**[新規データセット]**ダイアログでは、Uri/パスにリソース名を「Suppliers」として入力します。
JSONパスに「$.value[*]
」を入力します。
フィールドを取得するには、**[検証]ボタンをクリックしてクエリを検証します。その後、[変更を保存]**ボタンをクリックします。
Dataset_Products:
別のデータセットを同じデータソースエンドポイントに追加します。
**[新規データセット]**ダイアログでは、Uri/パスにリソース名を「Products」として入力します。
JSONパスに「$.value[*]
」を入力します。
フィールドを取得するには、**[検証]ボタンをクリックしてクエリを検証します。その後、[変更を保存]**ボタンをクリックします。 データソースへの接続とデータセットの追加については、データの連結を参照してください。
レポートコントロール一覧からTableデータ領域(Table1)をデザイナ面にドラッグ&ドロップします。
親テーブル(Table1)を選択して、データセットプロパティを「DataSet_Suppliers」に設定します。
詳細行の最初のセルに、次の式を入力します。
="会社名: " & Fields!CompanyName.Value
ヘッダ行とフッタ行をテーブルから削除します。
詳細行のセルを結合して、会社名を行全体に表示します。
これは、サプライヤーの情報を含む親テーブルのタイトルになります。
上記の行を選択した状態で、行ハンドルのプラス記号(+)をクリックして、詳細行を追加します。以下で説明するように、3つの詳細行を追加して、サプライヤーに関する詳細情報を表示します。
親テーブル(Table1)では、前に追加した行の下に2つの新しい詳細行を追加します。
これらの行には、以下の手順で説明するように、各サプライヤーの製品に関する情報が含まれます。
最初の行のセルを結合して、子テーブルのタイトルに「供給した製品」を入力します。
中央の行のセルを結合して、子テーブルを追加します。
レポートコントロール一覧からTableデータ領域(Table2)を前の手順で追加した行の内側にドラッグ&ドロップします。これにより、親テーブルの行に子テーブルが含まれます。
子テーブル(Table2)を選択して、データセットプロパティを「DataSet_Products」に設定します。
次の画像のように、データセットのフィールドを展開して、テーブルにフィールドを追加します。
- **メモ:**各製品の「UnitsInStock」と「TotalPrice」を表示する列をテーブルに追加しました。
- テーブルのヘッダ行には、データセットフィールドのラベルが自動的に入力されます。
- テーブルのフッタ行には、「=Sum(Fields!UnitsInStock.Value * Fields!UnitPrice.Value)
」の式を使用して供給した製品の合計価格が表示されます。
上記の手順を実行した後、製品の詳細が各マスタレコード(サプライヤ)に対して繰り返されます。ただし、選択したサプライヤーの製品詳細のみが表示されるように、ネストされたテーブル(SupplierId)の共通フィールドを使用して子データにフィルタを追加する必要があります。
子テーブル(Table2)を選択して、**[プロパティ]**ペインを選択します。
**[フィルタ]プロパティの[項目の表示]をクリックして、[+ 項目の追加]**を選択します。
フィルタのプロパティを表示するには、**[フィルタのプロパティ]**アイコンをクリックします。
**[フィルタのプロパティ]では、[式]の横にあるラジオボタンをクリックして、「SupplierId」**を選択します。
**[演算子]を「Equal」**に設定します。
**[値]の横にあるラジオボタンをクリックして、「SupplierId」**を選択します。
デザイナの上部にある**[レポート]タブをクリックして、[ヘッダの追加]**オプションを選択します。
TextBoxコントロール をヘッダ面にドラッグ&ドロップします。
テキストボックス内をクリックして、「サプライヤーの製品詳細 (マスター-詳細レポート)」というテキストを入力します。
メモ:必要に応じて、レポートに配置する各コントロールのサイズや位置を調整してください。
**[テキスト]セクションの[水平方向の整列]プロパティおよび[垂直方向の整列]**プロパティを使用して、テキストの整列を設定します。
**[背景]セクションの[背景色]プロパティを「#f1f1f1」**に設定して、ページヘッダの背景色を設定します。
**[テキスト]セクションの[フォント名]プロパティを「Song」**に設定します。
**[テキスト]セクションの[色]**プロパティを「#3da7a8」に設定して、ページヘッダのテキストの色と、レポートの親(マスター)テーブルと子(詳細)テーブルのタイトルを設定します。
**[テキスト]セクションの[サイズ]**プロパティを使用して、ページヘッダのテキストボックスを「16pt」と、テーブルのテキストボックスを「8pt」に設定します。
テーブル内にテキストボックスの罫線プロパティを設定するには、**[罫線]セクションの[幅]プロパティを「0.25pt」、[スタイル]プロパティを「Solid」、[色]**プロパティを「Gainsboro」に設定します。
価格フィールドで通貨の表示形式を設定するには、価格フィールドを含むテキストボックスを選択し、**[テキスト]セクションのを[表示形式]プロパティを「通貨」**に設定します。
**[プレビュー]**をクリックしてレポートの最終結果を表示します。
レビューモードを終了するには、デザイナの左上にある**[戻る]**ボタンをクリックします。
**[名前を付けて保存]をクリックして、レポートの名前を任意のものに変更し、[保存]**をクリックします。