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コントロールで構成されています。
出力内容を分かりやすくするために、それぞれのセル(TextBoxコントロール)に罫線を設定します。セルを選択した状態で、プロパティウィンドウのBorderStyleプロパティを”Solid”に設定します。
なお、今回紹介しているレポートでは、すべて罫線を設定していますが、以降の説明ではこの罫線を設定する手順は省略しています。
Matrixにフィールドを追加する
前述のとおり、初期状態のMatrixは4つのセルから構成されており、それぞれのセルを「コーナー」「行ヘッダ」「列ヘッダ」「集計詳細」と言います(下図参照)。
左上の「コーナー」には特別な機能はありません。空白のままにしておくか、タイトルなどを表示するのに使います。
「行ヘッダ」と「列ヘッダ」には集計対象としてグループ化したいフィールドを、「集計詳細」には集計したいフィールドと集計式を設定します。ここでは、以下のように設定します。
- 「行ヘッダ」にはフィールド「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”を選択し、記号付きの通貨として表示させます。