SHOEISHA iD

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

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

5分でわかるActiveReports帳票

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

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

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

 ページレポートに用意されているMatrixデータ領域(以下、Matrix)は、データを縦(行)と横(列)の両方向に展開できるコントロールです。行と列それぞれにグループを設定し、行と列が交差するセルに集計値を表示できます。つまり、「クロス集計表」を作成することができるコントロールです。

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

 Matrixは、他のデータ領域と異なり、横方向にもデータを展開できるため、使い方も他のデータ領域とは少し異なります。今回はこのMatrixの使い方を紹介します。

備考

 本稿は、連載『5分でわかるActiveReports帳票(2007年度版)』(渡辺俊史・宮本奈紗 著)の増補改訂版です。

Matrixレポートの作成

 まず、Matrixを使ったレポートを作成してみましょう。

 プロジェクトにページレポートを追加し、データソース、データセットを設定します。これらの手順については第2回をご参照ください。

 今回も、ActiveReportsに付属するAccessデータベースファイル「Nwind.mdb」を使用します。過去の注文データ(Order Details)テーブルから、注文ごとの価格の合計(Subtotal)、注文日(OrderDate)、発送する地域名(ShipCountry)、発送する区市町村(ShipCity)のデータセットを取得するため、以下のようなクエリーを設定します。

SELECT DISTINCTROW [Order Details].OrderID,
    Sum(CCur([UnitPrice]*[Quantity]*(1-[Discount])/100)*100) AS Subtotal,
    Orders.OrderDate,
    Orders.ShipCountry,
    Orders.ShipCity
FROM     [Order Details]
INNER JOIN Orders ON Orders.OrderID = [Order Details].OrderID
GROUP BY [Order Details].OrderID, 
    Orders.OrderDate,
    Orders.ShipCountry,
    Orders.ShipCity
ORDER BY Orders.OrderDate;

Matrixの配置

 次にページレポート上にMatrixを配置します。

 配置したら、プロパティウィンドウからMatrixのFixedSizeプロパティを設定し、クロス集計表が表示される領域を設定します。

 なお、Matrixは、初期状態では2×2の表になっており、各セルはTableデータ領域と同様にTextBoxコントロールで構成されています。

Matrixデータ領域
Matrixデータ領域

 出力内容を分かりやすくするために、それぞれのセル(TextBoxコントロール)に罫線を設定します。セルを選択した状態で、プロパティウィンドウのBorderStyleプロパティを”Solid”に設定します。

 なお、今回紹介しているレポートでは、すべて罫線を設定していますが、以降の説明ではこの罫線を設定する手順は省略しています。

Matrixにフィールドを追加する

 前述のとおり、初期状態のMatrixは4つのセルから構成されており、それぞれのセルを「コーナー」「行ヘッダ」「列ヘッダ」「集計詳細」と言います(下図参照)。

Matrixの構成要素
Matrixの構成要素

 左上の「コーナー」には特別な機能はありません。空白のままにしておくか、タイトルなどを表示するのに使います。

 「行ヘッダ」と「列ヘッダ」には集計対象としてグループ化したいフィールドを、「集計詳細」には集計したいフィールドと集計式を設定します。ここでは、以下のように設定します。

  • 「行ヘッダ」にはフィールド「ShipCountry」を設定します。TextBoxコントロールのValueプロパティは「=Fields!ShipCountry.Value」です。
  • 「列ヘッダ」にはフィールド「OrderDate」を設定します。TextBoxコントロールのValueプロパティは「=Fields!OrderDate.Value」です。
  • 「集計詳細」にはフィールド「Subtotal」を設定します。TextBoxコントロールのValueプロパティは「=Sum(Fields!Subtotal.Value)」です。
備考

 フィールドを設定するには、レポートエクスプローラのデータセットからデザイナ上に設定したいフィールドをドラッグ&ドロップするか、TextBoxコントロール上にマウスを移動した時に表示される「フィールド選択修飾」アイコン(フィールドセレクター)をクリックして表示されるリストから選択してください。

  ここまでの手順で作成したレポートでもプレビュー表示することは可能ですが、集計表として見やすくするために書式を設定します。

  • 「列ヘッダ」に設定されているフィールド「OrderDate」は日付時刻型です。何も書式を設定しないと時刻まで表示されてしまいますので、TextBoxコントロールのFormatプロパティから”Short Date”を選択し、「2000/01/01」のような形式で表示させます。
  • 「集計詳細」に設定しているフィールド「Subtotal」は金額に関する項目です。Formatプロパティから”Currency”を選択し、記号付きの通貨として表示させます。

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

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

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

もっと読む

この記事の著者

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

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

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

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

この記事をシェア

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

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング