Shoeisha Technology Media

CodeZine(コードジン)

特集ページ一覧

5分でわかるActiveReports帳票(2013年度版)-Matrixデータ領域を使用したクロス集計表の作成

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

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

Matrixの機能を使ったデータのグループ化

 最初に作成したレポートは、日付項目(OrderDate)を列ヘッダに設定したため、列が日付ごとに生成され、大量の空白マスが発生してしまいました。

 そこで、月単位の集計に変更したいと思います。

 データセットのSQLを変更して、「OrderDate」をあらかじめ月単位のデータに変換することで月単位の集計にすることは可能です。しかしながら、Matrixのグループ化の機能を使用すると、SQL文を変更しなくても集計単位を変更できます。

列グループを設定する

 まず、「行ヘッダ」と「集計詳細」には、最初のレポートと同じように”ShipCountry”と”Subtotal”を設定します。

 次にデザイナ上でMatrixを選択した状態で「プロパティ設定ダイアログ」を開き、「列グループ」タブを開きます(「プロパティ設定ダイアログ」はプロパティウィンドウの[コマンド]ペインから開くことが可能です)。

列グループの設定画面
列グループの設定画面

 「グループ化の条件」の「式」に、「年」と「月」を組み合わせたデータを取得するため、以下のように式を記述します(式の記述方法については第4回をご参照ください)。

=Year(Fields!OrderDate.Value) & "/" & Month(Fields!OrderDate.Value)

 なお、画面上には「=Year([OrderDate]) & "/" & Month([OrderDate])」のように短縮形で表示されます。

 また、列ヘッダのTextBoxのValueプロパティも、同じ式を設定しておきます。

 以上のように編集することで「列」が月単位になり、月ごとの集計値が表示されるようになります。

月単位で集計したレポート
月単位で集計したレポート
注意点:表示とグループ化の式は必ずしも同じではない

 ここで、最初に作成したレポートに戻り、「プロパティ設定ダイアログ」の「列グループ」を開いてみてください。列ヘッダにフィールドを設定しただけですが、今回設定した「グループ化の条件」の「式」として「=[OrderDate]」が設定されていることが確認できると思います。

 「列グループ」「行グループ」を設定していない場合、列ヘッダ、行ヘッダに設定したフィールドが自動的にグループ化の式になります。同時に、同じ式が、列ヘッダ、行ヘッダ自体のTextBoxコントロールのValueプロパティに設定されます。これがフィールドを設定しただけで(行/列グループを設定しなくても)、集計表が生成される仕組みです。

 ただし、このように動作するのは空のMatrixに対して行った最初の設定の時のみです。いったん、設定したMatrixに対して同じ操作で編集を加えた場合、意図した結果にならないことに注意が必要です。

 例えば、列ヘッダに一回フィールドを設定したあと、列ヘッダの式(Valueプロパティ)だけを変更した場合、ヘッダの表示は変更されますが、グループ化の式は変更されません。

 集計するグループも変更したい場合、列グループのグループ化の条件の式と、列ヘッダのValueプロパティをそれぞれ別個に変更する必要があります。これは、行グループを変更する場合も同じです。

ソートとフィルタ

 行グループや列グループについて、式の設定によって項目順のソート(並べ替え)や、フィルタ処理をすることができます。こちらの設定について今回は割愛いたしますが、基本的に第4回のTableのソートやフィルタ処理と同じなので、そちらをご覧ください。

グループを階層化する

 行グループや列グループは、階層構造とすることも可能です。

 例えば、行ヘッダに「ShipCountry(発送先の地域名)」のみを設定している表に「ShipCity(発送先の区市町村)」を行グループとして追加する方法を説明します。

 レポートエクスプローラを開き、データセットの中の「ShipCity」を行ヘッダ上にドラッグ&ドロップしてください。このときはすでに「ShipCountry」のセルの右側にバーが表示されている状態でドロップしてください(下図、参照)。このように設定することで行ヘッダが階層化され、大分類に地域名が、小分類に区市町村名が表示されるようになります。

行グループの追加(レポートエクスプローラを使用する場合)
行グループの追加(レポートエクスプローラを使用する場合)
行グループを階層化したレポート
行グループを階層化したレポート

 地域名と区市町村名が実際と異なる行がありますが、これはNwind.mdbのデータがこのように設定されているためです。

 なお、行グループの追加はプロパティ設定ダイアログからも行うことが可能です。

 デザイナ上でMatrixを選択した状態で「プロパティ設定ダイアログ」を開き、「行グループ」タブを開いてください。一番上の行グループ一覧の上にある「+」ボタンをクリックし、行グループを追加したら、「式」のコンボボックスから追加したいフィールド(今回の場合、”=Fields!ShipCity.Value”)を選択してください。

複数の行グループが存在するプロパティ設定ダイアログ
複数の行グループが存在するプロパティ設定ダイアログ

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

著者プロフィール

バックナンバー

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

もっと読む

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