ActiveReports for .NET 18.0J
セクションレポートでのデータのグループ化
ActiveReportsユーザーガイド > 基本操作 > セクションレポートの基本操作 > 共通操作 > セクションレポートでのデータのグループ化

ActiveReportsでは、レポート内にグループヘッダとグループフッタを追加し、データをグループ化することができます。グループヘッダは、Detailセクションの直前に、グループフッタは、Detailセクションの直後に挿入されます。

注意: レポートでは、対応するフッタセクションなしでヘッダセクションを追加することはできません。

グループヘッダとグループフッタのプロパティは、それぞれのプロパティ設定ダイアログから設定することができます。以下では、それぞれのダイアログで設定可能なプロパティについて説明します。

なお、[GroupHeader]ダイアログで表示される各オプションは、[プロパティ]ウィンドウからも設定が可能です。プロパティに直接アクセスするには、セクションを選択し、[プロパティ]ウィンドウを開きます。

[GroupHeader]ダイアログ

[GroupHeader]ダイアログにアクセスするには、グループヘッダをクリックして選択し、[プロパティ]ウィンドウの下部にあるコマンドから[プロパティ設定ダイアログ]リンクをクリックします。詳細については、「[プロパティ]ウィンドウ」を参照してください。

全般

外観

レイアウト

[GroupFooter]ダイアログ

[GroupFooter]ダイアログにアクセスするには、グループフッタをクリックして選択し、[プロパティ]ウィンドウの下部にあるコマンドから[プロパティ設定ダイアログ]リンクをクリックします。詳細については、「[プロパティ]ウィンドウ」を参照してください。

全般

外観

レイアウト

レポートを実行すると、グループヘッダ 、Detailセクション、グループフッタの順序にレポートが描画されます。グループ化するフィールドの各インスタンスに対して、新しいグループヘッダのセクションが描画されます。

グループヘッダにあるコントロールは、グループの各インスタンスに対して1回だけ描画されるので、Detailフィールドのデータを説明するために、このセクションに列ヘッダのラベルを追加します。

複数のグループ化

セクションレポートでは、グループヘッダとグループフッタをネストして、異なるフィールドでグループ化することができます。1つのレポート内に、32個までのネストされたグループを配置することができます。

メモ: グループヘッダとフッタのペアでは、グループヘッダのDataFieldプロパティで指定するフィールドに基づいてデータをグループ化する際に、グループの順序を維持する必要があります。
例 SELECT * FROM Customers ORDER BY GroupHeader1DataField, GroupHeader2DataField, GroupHeader3DataField

次のレポートは、出力されるレポートの各セクションの表示順序を示します。GroupHeader1は最初に追加しているため、他のグループヘッダの上側に表示され、またGroupFooter1は、2つのグループフッタの下側に表示されます。

複数のグループが追加されているレポートを実行すると、各セクションは以下の順序に印刷されます。

  1. ReportHeader1: レポートの先頭に1回だけ印刷されます。
  2. PageHeader1: レポートの各ページの先頭に1回ずつ印刷されます。
  3. GroupHeader1: DataFieldプロパティが返す最初の値に基づいて印刷されます。
  4. GroupHeader2: GroupHeader1のDataFieldに指定した値に基づいて、GroupHeader2のDataFieldの最初の値が1回だけ印刷されます。
  5. GroupHeader3: GroupHeader2のDataFieldに指定した値に基づいて、GroupHeader3のDataFieldの最初の値が1回だけ印刷されます。
  6. Detail1: GroupHeader3のDataFieldに指定した値に基づいて、各レコードに対して1回ずつ印刷されます。
  7. GroupFooter3: GroupHeader3のDataFieldに指定した値に基づいて、レポートの最後に1回だけ印刷されます。
  8. GroupHeader3: GroupHeader2のDataFieldに指定した値によって複数の値が返される場合、もう1回印刷される可能性があります。
  9. GroupHeader3が印刷される毎に、Detail1(関連のレポートに対して1回だけ)、GroupFooter3の順番でレポートが印刷されます。
  10. GroupFooter2: GroupFooter3が終了した後で、1回ずつ印刷されます。
  11. GroupHeader2: GroupHeader1のDataFieldに指定した値によって複数の値が返される場合、もう1回印刷される可能性があります。 GroupHeader2が印刷される毎に、Detail1(関連のレポートに対して1回だけ)、GroupFooter2の順番でレポートが印刷されます。
  12. GroupFooter1: GroupFooter2が終了した後で、1回ずつ印刷されます。
  13. GroupHeader1: DataFieldによって返される2番目の値に対して一回印刷され、その後、GroupHeader2が印刷され、上記のような手順を繰り返します。
  14. ReportFooter1: レポートの末尾に1回だけ印刷されます。
  15. PageFooter1: 各ページの下部に1回ずつ印刷されます。グループ内にPageFooterの位置が変更されます。  
    メモ: 設計時にPageFooterセクションは、ReportFooterセクションの上に表示されているが、実行時に最後のページのReportFooterセクションの後で表示されます。  

挿入するグループの順序は変更することができます。レポートに1つ以上のグループがある場合、デザイナ面を右クリックし、コンテキストメニューから[グループ順]を選択します。[グループ順]ダイアログでは、グループをドラッグして順序を変更することができます。

また、ActiveReportsのツールバーにある[グループ順]ボタンでも、グループの順序を変更することができます。詳細については、「ツールバー」を参照してください。

フィールドまたは式を利用したグループ化

セクションレポートでは、フィールドまたはフィールド式でデータをグループ化することができます。

次の手順は、Visual Studioのプロジェクトにセクションレポート(XMLまたはコード)のテンプレートを追加し、レポートがデータソースに接続されていることを前提にしています。詳細については、「クイックスタート」を参照してください。

  1. デザイナ面を右クリックし、[挿入]>[グループヘッダ/フッタ]を選択します。グループヘッダおよびフッタのセクションはDetailセクションの前後に追加されます。
  2. GroupHeaderセクションを選択した状態で、[プロパティ]ウィンドウのDataFieldプロパティにグループ化で使用するフィールドを設定します。ここでは例として、NWindデータベースのCustomersテーブルからCountryフィールドを選択します。
    メモ: DataFieldプロパティにフィールド式を設定することも可能です。
    例 =Country + City
  3. グループ化したフィールドをレポート上に表示するために、グループ化に使用するフィールドをGroupHeaderセクションにドラッグ&ドロップします。
  4. Detailセクションに他のフィールドをドラッグ&ドロップします。Detailセクション内のデータがフィールドによりグループ化されます。
  5. [プレビュー]タブで結果を確認します。

次の画像は、Countryフィールドでグループ化されたレポートを表示しています。

ヒント: グループ化の際にレコードの順序は変わりません。グループ化と同じ順序でデータがソート済みであることを前提としています。期待通りの結果を得るには、レポートデータソースでSQLクエリを設定する際にグループ化するフィールドでデータを並べ替える必要があります。
例 SELECT * FROM Customers ORDER BY Country