SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

5分でわかるActiveReports帳票

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

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

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

Matrixを使ったレポートの動作

 以上の手順で作成したレポートをプレビュー表示させると、以下のようになります。

Matrixデータ領域を使ったレポート
Matrixデータ領域を使ったレポート

 集計表の列が日付(注文日)ごとになるため、数十ページのレポートになります。また、使用しているサンプルデータベースには、同じ注文日で発送先が異なるデータが少ないため、空白マスが大量に存在します。

 このように、このレイアウトでは集計表としてはあまり実用的ではありませんが、この表を元にMatrixの動作を見てみましょう。

縦・横方向への伸長

 最初に述べた通り、Matrixは縦と横の両方向に伸長できるデータ領域です。

 行数(縦方向)は、Matrixの「行ヘッダ」に設定したフィールドに対してグループ化した時に得られるデータ数です。今回の場合、「行ヘッダ」に設定したフィールド「ShipCountry」に対してグループ化した時に得られるデータ数が”24”であり、これが集計結果全体の行数です。

 一方、列数(横方向)は、Matrixの「列ヘッダ」に設定したフィールドに対してグループ化した時に得られるデータ数です。今回の場合、「列ヘッダ」に設定したフィールド「OrderDate」に対してグループ化した時に得られるデータ数は”228”となり、これが集計結果全体の列数です。

 ただし、1ページに表示できる行数・列数は、MatrixコントロールのFixedSizeプロパティで決定されます。今回作成したレポートの場合、1ページに表示できる行数は最大27行、列数は最大5列になります(ヘッダ部分は除く)。

 従って、縦方向(24行)は1ページに収まりますが、横方向(228列)は1ページに収まらず46ページに分かれることになります。

 なお、今回作成したレポートでは、行ヘッダに設定したフィールドのデータ数(24)が、1ページで表示できる行数(27行)以下でしたが、このデータ数が多くなれば、縦方向も複数ページに分かれて表示されます。

 例えば、行ヘッダにフィールド「ShipCity」を指定した場合、そのフィールドをグループ化した時のデータ数は”49”になり、これは縦方向に2ページ必要なデータ数です。

 従って、フィールド「ShipCountry」を行ヘッダに設定した時に比べて、ページ数が倍になります。

 このように、Matrixによって生成された集計結果の行数・列数が1ページに収まりきらない場合、各ページに分割されてレポートが生成されます。集計結果がどのように分割されるかは、以下の図をご覧ください。

縦・横に表が広がる
縦・横に表が広がる

集計値が表示される

 行ヘッダや列ヘッダにフィールドを設定したときは、TextBoxコントロールのValueプロパティにはフィールドの値をそのまま出力するような式(例:=Fields!ShipCountry.Value)が設定されました。

 一方、集計詳細セルにフィールドを設定したときは、集計関数Sum()を含む式が自動的に設定されました。このように、集計詳細セルには集計した値を表示することになっています。これは行と列が同じ組み合わせのレコードが複数存在しうるからです。例えば、今回のレポートで使用している売上データで言えば「ShipCountry=東京、OrderDate=4月1日というレコードが複数存在する」ということです。

 集計詳細セルに設定したフィールドの型が数値型の場合、デフォルトで設定される集計関数は合計値を取得するSum()ですが、他にも任意の集計関数が設定できます。例えば、件数を取得するCount()、平均を取得するAvg()なども設定できます。

 設定したフィールドの型が数値型でない場合、デフォルトで設定される集計関数は、最初のレコードの値を表示するFirst()です。従って、行と列の組み合わせに対して対象データが1レコードしか存在しない、または行と列の組み合わせが一致するすべてのレコードについてフィールドの値が常に同じであると保証されている場合以外には、意図した結果になりません。

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

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
5分でわかるActiveReports帳票連載記事一覧

もっと読む

この記事の著者

グレープシティ株式会社 ActiveReportsチーム(グレープシティカブシキガイシャ アクティブレポートチーム)

 宮城県仙台市に本社を構えるグレープシティでは、日本の業務に適したシステムをより早く開発するためのソフトウェアを提供しています。エンドユーザーの利用しやすさ、幅広いユーザー環境への対応、そして何よりプログラマの作業を軽減することを一番に目指しています。 ActiveReportsは、帳票開発に必要なあらゆる機能を備えた当社を代表するコンポーネントの1つ。1998年の発売以来、日本だけでなく全世界で多数の帳票開発者に使用されています。製品開発は同チームが中心になり、「日本仕様」の厳しい要望を実現することを目指しています。...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/7542 2015/07/23 16:16

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング