Shoeisha Technology Media

CodeZine(コードジン)

特集ページ一覧

5分でわかるActiveReports帳票(2013年度版)-ページレポートにおけるグループ化と式

ActiveReports for .NET 7.0Jで作るサンプル帳票(4)

  • LINEで送る
  • このエントリーをはてなブックマークに追加
目次

グループヘッダ・フッタのレイアウト

 グループヘッダ・フッタに配置できるものは「グループを通じて変化しないもの」か「グループ全体の集計値」です。

 上記の例では、グループのキーとなっているCategoryIDがグループで変化しないフィールドです。この場合、CategoryIDごとのカテゴリー名を格納しているCategoryNameもそのグループを通じて変化しないので、グループヘッダにCategoryNameを表示させることが可能です。

 グループフッタ上の左端のTextBoxコントロール上にマウスカーソルをあわせ、表示される選択装飾アイコンから「CategoryName」を選択すると、以下のような式がValueプロパティに設定されます。

=First(Fields!CategoryName.Value)

 詳細行でCategoryNameを選択したときは「=Fields!CategoryName.Value」と設定されますが、グループヘッダ上でアイコンから選択すると、グループの最初のデータを得る「First」関数が自動的に付きます。グループ化された複数のレコードの内、どのレコードをグループヘッダ上に表示するか、明確に設定するためです。

グループの集計

 次に、グループで集計を取ってみましょう。グループフッタ上の右端のTextBoxコントロール上にマウスカーソルをあわせ、表示される選択装飾アイコンから「ProductSales」を選択すると、以下のような式がValueプロパティに設定されます。

=Sum(Fields!ProductSales.Value)

 今度は、値の合計を得る集計関数である「Sum」関数が自動的に付きました。これで、グループごとの「ProductSales」の合計が表示されるようになります。

 このようにグループヘッダ/フッタ上で選択装飾アイコンからフィールドを選択すると、自動的に集計関数が付加されます。付加される関数は、数値型なら合計を表す「Sum」、それ以外なら最初の項目を表す「First」です。

グループ化と集計を行ったレポート
グループ化と集計を行ったレポート

グループ化とデータの並び順

 ここまでの説明で作成した、グループ化していない単純なレポートとグループ化されたレポートをご覧ください。

 グループ化されたレポートは、CategoryIDでグループ化されており、CategoryIDの順番で出力されています。しかしながら、これらのレポートのデータソースとして設定しているSQL文は、グループ化していない単純なレポートと同じものです。

 セクションレポートでグループ化する場合、データを抽出するSQL文にORDER BY句を設定するなどして、あらかじめグループ化したい順番にデータを整列させておく必要がありました。

 それに対して、ページレポートでグループ化する場合、レポート側の機能で自動的にデータのグループ化を行います。データソースをあらかじめ整列させておく必要はありません。

グループのソート

 また、値に従って並べ替え(ソート)が可能です。Tableのプロパティ設定ダイアログを開き、「グループ」の項目から「並べ替え」のタブを開きます。

 「並べ替え」のための式を追加するパネルがあります(複数設定可能)。ここに、並べ替えの基準となる数値(番号や日付など)となる式を設定すれば、グループ単位で自動的に並べ替えが行われます。ここではCategoryIDフィールドを設定してみます。実行させるとCategoryIDの数値が小さい順にグループが並びます。なお、並び順を「降順」に設定して数値が大きい順に並ばせることも可能です。

ソートの設定
ソートの設定

グループのフィルタ

 式を使ってフィルタリングし、特定の条件を満たすデータのみ出力することも可能です。Tableのプロパティ設定ダイアログを開き、「グループ」の項目から、「フィルタ」のタブを開きます。

 例えば「CategoryID=3のデータは表示しない。それ以外のデータは表示する」という要件を満たしたい場合、以下のように設定します。

  1. 緑の+ボタンを押して、フィルタ式を追加する。
  2. 式欄にCategoryIDを設定する。
  3. 演算子欄に「NotEqual」を設定する。
  4. 値欄に「3」を設定する。

 これで「CategoryID=3のデータは表示しない(CategoryIDが3と等しくないデータのみ表示する)」フィルタが設定されます。このレポートを実行するとCategoryID=3のデータはTableに表示されません。

フィルタの設定
フィルタの設定

  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

バックナンバー

連載:5分でわかるActiveReports帳票

もっと読む

All contents copyright © 2005-2019 Shoeisha Co., Ltd. All rights reserved. ver.1.5