.NET帳票コンポーネント「ActiveReports for .NET(アクティブレポート)」の使い方を解説する、「これからはじめるActiveReports帳票」。
第5回目となる今回は、第4回で取り上げた「セクションレポート入門編」の第2弾として、「データのグループ化」について解説します。前回の内容については以下からご覧ください。

開発環境
今回も前回の記事で作成したWindows FormsアプリケーションおよびActiveReportsの開発環境をそのまま利用します。
新たなプロジェクト作成や環境構築は不要ですので、前回のソリューションを開いて作業を進めてください。
グループ化とは?
帳票を作成する際、同じ種類や属性ごとにデータをまとめて表示したい場面は多くあります。たとえば、売上データを「商品分類ごと」に集計したり、社員一覧を「部署ごと」に分けて表示したりするケースです。このように、特定のフィールド(列)でデータをまとめることを「グループ化」と呼びます。
前回の記事でも使用した、次のような売上明細データを例にしてみます。

このデータをたとえば、「商品大分類ごと」にグループ化してみると次のようになります。

商品大分類の「生鮮品」、「加工食品」などのデータごとに行が追加され、さらに金額の小計も表示されていることがわかります。
続いて、「顧客ごと」にグループ化してみます。

今度は、顧客名ごとに行が追加され、金額小計が表示されているのがわかると思います。
ご覧いただいてわかるように、グループ化とは特定のフィールド(列)が連続して表示されるように並び替えしたうえで、そのフィールドのデータが切り替わるタイミングで行を追加したり、またページを切り替えたりすることなどを指します。グループ化を行うことで、グループ単位での集計が可能となり、わかりやすい帳票を作成する上で非常に重要な役割を果たします。
セクションレポートのグループ化
では、実際にActiveReportsの「セクションレポート」でグループ化した帳票を作成していきましょう。
前回の記事で、作成した「SectionReportsWinformApp」をそのまま活用し、「Report.rpx」の帳票レイアウトにグループ化のデザインを行っていきます。

グループヘッダ/フッタの挿入
グループ化を行うためには、「グループヘッダ/フッタ」セクションを追加する必要があります。以下の動画のように、「挿入」>「グループヘッダ/フッタ」を選択して、グループヘッダ/フッタを追加してください。
「グループヘッダ/フッタ」セクションを追加後、「グループ化」を行う、データフィールドを設定します。今回は、次のように「super_category_code(商品大分類コード)」を指定します。

さらに、グループヘッダ/フッタの動作がわかるように、次のようにテキストボックスを配置してみます。

動作を確認するため、この状態でプレビューしてみます。
ご覧のように、「super_category_code(商品大分類コード)」のデータ値が切り替わるタイミングで、グループヘッダとフッタに配置したテキストボックスが表示されています。
ActiveReportsのセクションレポートにおける、グループ化の基本はこのように、「グループヘッダ/フッタ」セクションを追加し、データフィールドを設定するという、とてもシンプルなデザイン方法で簡単に作成可能です。
グループ化したいフィールドが複数ある場合も、「グループヘッダ/フッタ」セクションを追加することで、簡単に追加することができます。
グループセクションでの集計
冒頭でも解説しましたが、帳票においてグループ化を行う理由のひとつに「値の集計」があります。ここからは、先ほど追加したグループセクションで集計を行っていきたいと思います。
先ほど「グループヘッダ/フッタ」に追加したテキストボックスを削除し、以下のように新たなテキストボックスをそれぞれ追加します。

青枠で囲われている部分は、Detailセクションと同様の「DataField」の値を設定。オレンジ枠の囲われている部分は、以下の図にあるように「DataField」に「amount」を設定し、「集計カテゴリ」の「SummaryFunc:Sum」、「SummaryGroup:GroupHeader1」、「SummaryRunning:None」、「SummaryType:SubTotal」を設定します。

このプロパティ設定により、DataFieldで指定した「amount(金額)」の値が、「super_category_code(商品大分類コード)」ごとにグループ化され、小計として表示されます。実際にプレビュー動作で確認してみましょう。
動作を確認すると、グループヘッダとグループフッタに設定したテキストボックスでは、設定どおりグループごとの値が小計されています。
なお、テキストボックスの集計は、グループセクションでの集計のほか、詳細セクションでグループ単位やレポート単位の累計値を取得することも可能です。
さらに詳しいグループ化とテキストボックスの集計についての解説は、以下の製品ヘルプをご覧ください。
複数のグループ化
ここまでで、グループ化の基本について解説してきました。ここからは、売上明細表の実際の利用例にあわせて、複数のグループ化を行った帳票を作成していきます。
すでに設定済みのグループセクションを一旦削除、改めて以下のようにグループセクションを2つ追加しました。

グループセクションは下記のフィールドを設定。今回ヘッダには、何も表示させないためフッタのみ小計と、グループ対象の値を表示するようにデザインしています。
- GroupHeader1:[‘slip_no’](伝票番号)
- GroupHeader2:[‘super_category_name’](商品大分類)
再度、この状態でプレビューを行ってみます。
伝票番号ごとの小計と、そのグループ内でさらに商品大分類ごとの小計が表示されています。このように、帳票作成では複数のグループ単位で小計を集計したい場面がよくあります。
セクションレポートでは、グループヘッダーやグループフッターを利用して、グループごとの見出しや小計、合計などを効率的に表示できます。どのフィールドでグループ化し、どのタイミングで集計するかを工夫することで、より見やすく分かりやすい帳票を作成することが可能です。
改ページ
ここまで、グループ化の基本的なデザイン方法について解説してきましたが、最後に改ページについてもご紹介します。
改ページとは、グループ化したフィールドごとにページを区切り、新しいページに切り替える機能です。たとえば、伝票番号ごとに改ページを設定すれば、各伝票ごとに帳票のページが分かれて表示されるため、見やすさや整理のしやすさが向上します。
では、実際に改ページ設定を行っていきましょう。
今回は、伝票番号単位で改ページをしていきます。既に「[‘slip_no’](伝票番号)」のグループセクションは追加済みですので、以下のように「NewPage」プロパティに「Before」を設定してください。

「NewPage」プロパティの設定内容は、次のようになっています。今回は「Before」を設定していますので、[‘slip_no’](伝票番号)」のグループヘッダセクションの始まる前に新しいページが挿入されます。
- Before:セクションの印刷前に新しいページを挿入する
- After:印刷後に新しいページを挿入する
- BeforeAfter:印刷前と印刷後の両方で新しいページを挿入する
このプロパティはページヘッダおよびページフッタ以外のすべてのセクションで使用できます。改ページの基準となる項目が一つだけの場合は、レポートヘッダやレポートフッタに設定できますが、複数項目で改ページを制御したい場合には、今回のようにグループヘッダやグループフッタに設定する必要があります。
それでは、設定した動作をデバッグ実行で確認してみましょう。
設定どおり、伝票番号ごとにページが分かれていることが確認できました。
改ページを行ったことで、伝票ごとの集計結果だけでなく、より小さな単位である商品大分類ごとの集計結果も、各集計単位の区切りがはっきりし、1ページあたりの表示範囲が限定されるため、これまで以上に見やすくなったのではないでしょうか。
このように、見やすい帳票を作成する上で、どの単位で改ページを行うかは非常に重要な要素となります。ぜひ、さまざまな集計単位や帳票の構成パターンを試しながら、ご自身の業務や目的に最適な帳票レイアウトを作成してみてください。
さいごに
「これからはじめるActiveReports帳票」第5回目は、セクションレポート入門編の2回目として、「データのグループ化」をテーマに、前回作成した「売上明細表」を用いて解説しました。
セクションレポートは、現在4つあるActiveReportsのレポート形式の中で、発売当初から提供されている最も歴史の長いものです。長い歴史を持つ分、セクションレポートには様々な機能が実装されており、非常に奥が深いものとなっています。
今回ご紹介した内容は、その機能のほんの一部に過ぎませんが、セクションレポートを扱う上で欠かせない重要なポイントです。これからセクションレポートを学びたい方は、ぜひ本記事を参考にしてください。
今回の内容について動作を確認されたい方は、是非トライアル版ダウンロードの上、お試しください。
製品の機能を手軽に体験できるデモアプリケーションも公開しておりますので、こちらもご確認ください。
また、ご導入前の製品に関するご相談、ご導入後の各種サービスに関するご質問など、お気軽にお問合せください。