ActiveReports for .NET 18.0J
複数データセットを使ったレポート(ページレポートのみ)
ActiveReportsユーザーガイド > サンプルとチュートリアル > チュートリアル > ページレポート/RDLレポートのチュートリアル > レイアウト > 複数データセットを使ったレポート(ページレポートのみ)

ページレポートでは、グループ化を使用して、複数データセット(少なくとも1つの共通フィールドを持つ)を異なるテーブルにバインドして、レポートの同じページに一緒に描画することができます。2つのテーブルにグループ化を適用するには、以下の設定を行います。

最初のテーブルのグループ化は、レポートでのグループ化の影響を受けます。2番目のテーブルのグループ化は、フィルタの影響を受け、レポートデータセットにバインドされていない列をグループ化します。

このチュートリアルでは、グループ化を使用して2つのテーブルを2つの異なるデータセットにバインドする方法を紹介します。レポートは、共通フィールド「[ProductID]」によってグループ化されます。
次の画像は、「[ProductID]= 1」に対応するすべてのデータを表示する最後の2つのページを示します。また、両方のテーブルのRepeatBlankRowsプロパティを「FillGroup」に設定して、グループ内の空行を描画できるようにします。

Grouping on Multiple tables in Page report

次の画像は、「[ProductID]= 2」に対応するデータを表示する最初の2つのページを示します。

Grouping on Multiple tables in Page report

新しいレポートを作成する

デザイナアプリにて、[新規作成]をクリックし、新しいレポートを作成します。

レポートをデータ連結しデータセットを追加する

レポートをデータソースに接続する

  1. レポートを新規作成すると、[レポートデータソース]ダイアログが表示されます。このダイアログは、[データソース]ノードを右クリックして、[データソースの追加]オプションを選択する時も表示されます。
  2. [レポートデータソース]ダイアログで[全般]ページを選択し、名前を「NwindDataSource」に変更します。
  3. 種類を「Sqlite Provider」に設定します。
  4. 次のように、接続文字列を「NWIND.db」に設定します。
    接続文字列
    コードのコピー
    Data Source=C:\Data\NWIND.db
    
  5. [OK]をクリックします。

データセットを追加する

データセット1

  1. レポートエクスプローラで、[データソース]ノードを右クリックして[データセットの追加]を選択するか、[追加](+)ボタンから[データセット]を選択します。
  2. [データセット]ダイアログで、[全般]ページを選択し、[名前]フィールドに「DataSet1」と入力します。この名前が[レポートエクスプローラ]で、追加したデータソースの子ノードとして表示されます。
  3. [データセット]ダイアログの[クエリ]ページで、[クエリ]フィールドに次のクエリを入力します。
    データセットクエリ
    コードのコピー
    select t.CustomerID, ContactName, CompanyName,Address, t.OrderID, t.ProductID, ProductName, CategoryID, Quantity, t.UnitPrice, t.OrderDate from (select *  from (select * from Customers inner join Orders on Customers.CustomerID=Orders.CustomerID) as p inner join order_details on p.OrderID=order_details.OrderID) as t inner join Products on t.ProductID=Products.ProductID order by t.CustomerID
    
  4. クエリを検証するために、クエリボックスの横にある[データセットの検証]アイコンをクリックします。
  5. [OK]をクリックしてダイアログを閉じます。データセットとクエリフィールドは、[レポートエクスプローラ]にノードとして表示されます。

データセット2

  1. レポートエクスプローラで、[データソース]ノードを右クリックして[データセットの追加]を選択するか、[追加](+)ボタンから[データセット]を選択します。
  2. [データセット]ダイアログで、[全般]ページを選択し、[名前]フィールドに「DataSet2」と入力します。
  3. [データセット]ダイアログの[クエリ]ページで、[クエリ]フィールドに次のクエリを入力します。
    データセットクエリ
    コードのコピー
    SELECT * FROM Invoices
    
  4. クエリを検証するために、クエリボックスの横にある[データセットの検証]アイコンをクリックします。
  5. [OK]をクリックしてダイアログを閉じます。データセットとクエリフィールドは、[レポートエクスプローラ]にノードとして表示されます。 

レポートのレイアウトを作成する

  1. レポートエクスプローラで、[レポート]ノードをに移動し、[プロパティ]ウィンドウから[ページレイアウトの設定]リンクをクリックして開きます。
  2. [ページ]ダイアログで、[全般]ページを選択し、[データセット名]フィールドを「DataSet1」に設定します。
  3. [グループ化]ページを選択し、[グループ化の条件]の[式]フィールドに[ProductID]を入力します。レポートのグループ化は、両方のデータセットの共通のフィールドによって行われます。
  4. デザイン面に、Tableコントロール(Table1)をドラッグ&ドロップします。
  5. DataSet1から、次のフィールドをTable1の詳細行にドラッグします。
    • [OrderID]
    • [OrderDate]
    • [CompanyName]
    • [OrderID]
    • [ContactName]
    それに応じてテーブルヘッダを変更します。
  6. テーブルを選択し、[プロパティ]ウィンドウから[RepeatBlankRows]プロパティを「FillGroup」に設定します。これにより、グループ内の空行が描画できます。
  7. デザイン面に、Tableコントロール(Table2)をドラッグ&ドロップします。
  8. DataSet2から、次のフィールドをTable2の詳細行にドラッグします。
    • [Shippers_CompanyName]
    • [ShipCity]
    • [ShipCountry]
    それに応じてテーブルヘッダを変更します。
  9. Table2を選択した状態で、[プロパティ設定ダイアログ]リンクをクリックし、[Table]ダイアログを開きます。
  10. [フィルタ]ページを選択し、[+ 追加]をクリックしてフィルタを追加します。両方のデータセットに共通のフィールドであるフィルタを追加する必要があります。
  11. 式に「ProductID」、演算子に「Equal」、値に[ProductID] を入力します。
  12. テーブルを選択し、[プロパティ]ウィンドウから[RepeatBlankRows]プロパティを「FillGroup」に設定します。これにより、グループ内の空行が描画できます。
  13. Tableの上部に2つのテキストボックスを追加し、そのValueプロパティを次のように設定し、ページ番号と商品IDに関する情報を表示します。
    • TextBox1: =Globals!PageNumber & " / " & Globals!TotalPages & "ページ"
    • TextBox2: ="商品ID:" & Fields!ProductID.Value

    次の画像は、レポートのデザイン時のレイアウトを示します。

    Grouping on Multiple tables in Page report

  14. レポートをプレビューします。
関連トピック