ActiveReportsでは、レポート内にグループヘッダとグループフッタを追加し、データをグループ化することができます。グループヘッダは、Detailセクションの直前に、グループフッタは、Detailセクションの直後に挿入されます。
注意: レポートでは、対応するフッタセクションなしでヘッダセクションを追加することはできません。
グループヘッダとグループフッタのプロパティは、それぞれのプロパティ設定ダイアログから設定することができます。以下では、それぞれのダイアログで設定可能なプロパティについて説明します。
なお、[GroupHeader]ダイアログで表示される各オプションは、[プロパティ]ウィンドウからも設定が可能です。プロパティに直接アクセスするには、セクションを選択し、[プロパティ]ウィンドウを開きます。
[GroupHeader]ダイアログ
[GroupHeader]ダイアログにアクセスするには、グループヘッダをクリックして選択し、[プロパティ]ウィンドウの下部にあるコマンドから[プロパティ設定ダイアログ]リンクをクリックします。詳細については、「[プロパティ]ウィンドウ」を参照してください。
全般
- 名前: コード上でオブジェクトを識別するために使用される名前です。まだレポートで使用されていない一意の名前を設定します。
- タグ: GroupHeaderセクションにユーザー定義の情報を設定します。
- 表示する: GroupHeaderセクションを表示するかどうかを設定します。
- データフィールド: データのグループ化に使用するフィールド、または式を設定します。
外観
- 背景色: GroupHeaderセクションの背景色を設定します。
レイアウト
- 新しいページの挿入: GroupHeaderセクションの印刷前に新しいページを挿入するか、印刷後に挿入するか、または印刷前と印刷後の両方で挿入するかを設定します。
- 新しいカラムの挿入: GroupHeaderセクションの印刷前に新しいカラム(マルチカラムレポート)を開始するか、印刷後に開始するか、または印刷前と印刷後の両方で開始するかを設定します。
- 繰り返し出力: カラム、またはDetailセクションや関連フッタが複数ページに分割される場合に、出力されるページごとにGroupHeaderセクションを出力します。
- ヘッダとフッタを1つのブロックとして1ページ内に収める: GroupHeaderとGroupFooterのセクションを1つのブロックとして同じページ内に表示します。
- 1ページ内に収める: GroupHeaderセクションを1ページ内に収めて表示します。
- グループを同じカラムの1つのブロックとして出力する: GroupHeaderとGroupFooterのセクションを同じカラムの1つのブロックとして表示します。
- 次のセクションをこのセクションの上に重ねて出力する: 次のセクションをこのGroupHeaderセクションの上に重ねて表示します。グループのdetail内でグループヘッダの情報を表示するには、DetailセクションのBackColorプロパティを「Transparent」に設定する必要があります。
- Detailセクションと同じカラムレイアウトを使用する: GroupHeaderセクションでDetailセクションと同じカラムレイアウトを使用します。
- コントロールに合わせて拡大する: セクション内のコントロールに合わせて、GroupHeaderセクションの高さを拡大します。
- コントロールに合わせて縮小する: セクション内のコントロールに合わせて、GroupHeaderセクションの高さを縮小します。
[GroupFooter]ダイアログ
[GroupFooter]ダイアログにアクセスするには、グループフッタをクリックして選択し、[プロパティ]ウィンドウの下部にあるコマンドから[プロパティ設定ダイアログ]リンクをクリックします。詳細については、「[プロパティ]ウィンドウ」を参照してください。
全般
- 名前: コード上でオブジェクトを識別するために使用される名前です。レポートで一意の名前を設定します。
- タグ: GroupFooterセクションにユーザー定義の情報を設定します。
- 表示する: GroupFooterセクションを表示するかどうかを設定します。
外観
- 背景色: GroupFooterセクションの背景色を設定します。
レイアウト
- 新しいページの挿入: GroupFooterセクションの印刷前に新しいページを挿入するか、印刷後に挿入するか、または印刷前と印刷後の両方で挿入するかを設定します。
- 新しいカラムの挿入: GroupFooterセクションの印刷前に新しいカラム(マルチカラムレポート)を開始するか、印刷後に開始するか、または印刷前と印刷後の両方で開始するかを設定します。
- 1ページ内に収める: GroupFooterセクションを1ページ内に収めて表示します。
- Detailセクションと同じカラムレイアウトを使用する: GroupFooterセクションでDetailセクションと同じカラムレイアウトを使用します。
- ページ下部に出力する: GroupFooterセクションをPageFooterセクションの直上、またページの下部に挿入します。
- コントロールに合わせて拡大する: セクション内のコントロールに合わせて、GroupFooterセクションの高さを拡大します。
- コントロールに合わせて縮小する: セクション内のコントロールに合わせて、GroupFooterセクションの高さを縮小します。
レポートを実行すると、グループヘッダ 、Detailセクション、グループフッタの順序にレポートが描画されます。グループ化するフィールドの各インスタンスに対して、新しいグループヘッダのセクションが描画されます。
グループヘッダにあるコントロールは、グループの各インスタンスに対して1回だけ描画されるので、Detailフィールドのデータを説明するために、このセクションに列ヘッダのラベルを追加します。
複数のグループ化
セクションレポートでは、グループヘッダとグループフッタをネストして、異なるフィールドでグループ化することができます。1つのレポート内に、32個までのネストされたグループを配置することができます。
メモ: グループヘッダとフッタのペアでは、グループヘッダの
DataFieldプロパティで指定するフィールドに基づいてデータをグループ化する際に、グループの順序を維持する必要があります。
例
SELECT * FROM Customers ORDER BY GroupHeader1DataField, GroupHeader2DataField, GroupHeader3DataField
次のレポートは、出力されるレポートの各セクションの表示順序を示します。GroupHeader1は最初に追加しているため、他のグループヘッダの上側に表示され、またGroupFooter1は、2つのグループフッタの下側に表示されます。
複数のグループが追加されているレポートを実行すると、各セクションは以下の順序に印刷されます。
- ReportHeader1: レポートの先頭に1回だけ印刷されます。
- PageHeader1: レポートの各ページの先頭に1回ずつ印刷されます。
- GroupHeader1: DataFieldプロパティが返す最初の値に基づいて印刷されます。
- GroupHeader2: GroupHeader1のDataFieldに指定した値に基づいて、GroupHeader2のDataFieldの最初の値が1回だけ印刷されます。
- GroupHeader3: GroupHeader2のDataFieldに指定した値に基づいて、GroupHeader3のDataFieldの最初の値が1回だけ印刷されます。
- Detail1: GroupHeader3のDataFieldに指定した値に基づいて、各レコードに対して1回ずつ印刷されます。
- GroupFooter3: GroupHeader3のDataFieldに指定した値に基づいて、レポートの最後に1回だけ印刷されます。
- GroupHeader3: GroupHeader2のDataFieldに指定した値によって複数の値が返される場合、もう1回印刷される可能性があります。
- GroupHeader3が印刷される毎に、Detail1(関連のレポートに対して1回だけ)、GroupFooter3の順番でレポートが印刷されます。
- GroupFooter2: GroupFooter3が終了した後で、1回ずつ印刷されます。
- GroupHeader2: GroupHeader1のDataFieldに指定した値によって複数の値が返される場合、もう1回印刷される可能性があります。 GroupHeader2が印刷される毎に、Detail1(関連のレポートに対して1回だけ)、GroupFooter2の順番でレポートが印刷されます。
- GroupFooter1: GroupFooter2が終了した後で、1回ずつ印刷されます。
- GroupHeader1: DataFieldによって返される2番目の値に対して一回印刷され、その後、GroupHeader2が印刷され、上記のような手順を繰り返します。
- ReportFooter1: レポートの末尾に1回だけ印刷されます。
-
PageFooter1: 各ページの下部に1回ずつ印刷されます。グループ内にPageFooterの位置が変更されます。
メモ: 設計時にPageFooterセクションは、ReportFooterセクションの上に表示されているが、実行時に最後のページのReportFooterセクションの後で表示されます。
挿入するグループの順序は変更することができます。レポートに1つ以上のグループがある場合、デザイナ面を右クリックし、コンテキストメニューから[グループ順]を選択します。[グループ順]ダイアログでは、グループをドラッグして順序を変更することができます。
また、ActiveReportsのツールバーにある[グループ順]ボタンでも、グループの順序を変更することができます。詳細については、「ツールバー」を参照してください。
フィールドまたは式を利用したグループ化
セクションレポートでは、フィールドまたはフィールド式でデータをグループ化することができます。
次の手順は、Visual Studioのプロジェクトにセクションレポート(XMLまたはコード)のテンプレートを追加し、レポートがデータソースに接続されていることを前提にしています。詳細については、「クイックスタート」を参照してください。
- デザイナ面を右クリックし、[挿入]>[グループヘッダ/フッタ]を選択します。グループヘッダおよびフッタのセクションはDetailセクションの前後に追加されます。
- GroupHeaderセクションを選択した状態で、[プロパティ]ウィンドウのDataFieldプロパティにグループ化で使用するフィールドを設定します。ここでは例として、NWindデータベースのCustomersテーブルからCountryフィールドを選択します。
メモ: DataFieldプロパティにフィールド式を設定することも可能です。
例 =Country + City
- グループ化したフィールドをレポート上に表示するために、グループ化に使用するフィールドをGroupHeaderセクションにドラッグ&ドロップします。
- Detailセクションに他のフィールドをドラッグ&ドロップします。Detailセクション内のデータがフィールドによりグループ化されます。
- [プレビュー]タブで結果を確認します。
次の画像は、Countryフィールドでグループ化されたレポートを表示しています。
ヒント: グループ化の際にレコードの順序は変わりません。グループ化と同じ順序でデータがソート済みであることを前提としています。期待通りの結果を得るには、レポートデータソースでSQLクエリを設定する際にグループ化するフィールドでデータを並べ替える必要があります。
例 SELECT * FROM Customers ORDER BY Country