Shoeisha Technology Media

CodeZine(コードジン)

特集ページ一覧

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

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

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

 単純なレポートの場合、比較的簡単なデザイン作業で実現することができました。ただし、実際のレポートにはいろいろな要望が存在します。例えば上記レポートについて、「売上金額を千円単位で表示したい」という要望が出てくるかもしれません。SQL文を工夫することで実現することも可能ですが、さらに複雑な要望になるとSQL文だけで対処するのは難しくなります。

 フィールドを設定した詳細行のデザイン画面を見ると、=[CategoryName]とか=[ProductSales]のように、イコールと角カッコでフィールド名が挟まれたものが表示されています。このような記述をページレポートでは「」と言います。

 デザイン画面上に表示されている文字列は、そのTextBoxコントロールのValueプロパティの値です。なお、デザイン画面上では=[ProductSales]と表示されておりますが、プロパティウィンドウには=Fields!ProductSales.Valueと表示されます。これは、デザイン画面上では短縮形で表示されているためです。

短縮形 =[ProductSales]
基本形 =Fields!ProductSales.Value

 ページレポートの式は、Visual Basic.NET類似の構文で記述される一種のスクリプトです。式を使用することで、データを加工して表示することや、より高度なレイアウトを実現できるようになります。

式の記述

 式の記述方法を見てみましょう。詳細行のTextBoxコントロールを選択した状態で、プロパティウィンドウのValueプロパティを選択します。すると右端にボタンが表示されますのでクリックしてください。ドロップダウンリストが表示されます。

式エディタの起動
式エディタの起動

 リストの一番上に表示されている「〈式…〉」を選択すると、式エディタダイアログが表示されます。

式エディタ
式エディタ

 式エディタでは、短縮形ではなく基本形で式を表示/編集します。

 式の先頭に付いているイコールは「式として評価する」ための記号なので、固定文字列を表示させる場合以外は常に必要です。

 例えば「=Fields!ProductSales.Value」という式は、「ProductSales」という名前のフィールドから得られる値を出力するということを表しています。このフィールドの値を1000で割った時の値を得たい場合には、以下のような式を設定します。

=Fields!ProductSales.Value /1000

 さらに、末尾に「千円」とつけたい場合には、&で文字列連結を行い、以下のように設定します。

=Fields!ProductSales.Value /1000 & "千円"

 これで、「ProductSales(売上金額)」が千円単位で表示されるようになります。

式で使える関数など

 式で使える関数、演算子、フィールドは多数あります。詳しくは、製品ヘルプの[概念]-[ページレポートの概念]-[式]をご覧ください。ここでは代表的なものをいくつか紹介します。

演算子

 通常の四則演算や、Visual Basicで一般的な演算子は使用可能です。上記の例では除算の「/」と連結の「&」を使っています。

日付・時刻

 現在の日付時刻を取得するためのフィールドが、以下の形で用意されています。

=Globals!ExecutionTime

 また、Microsoft.VisualBasic.DateAndTimeのメソッドが使えるので、例えば西暦年だけを抽出したい場合は以下のようにします。

=Year(Globals!ExecutionTime)

 これはデータソースからの値に適用することも可能です。例えばDateTime型のフィールド「DateFieldX」に対してYearメソッドを適用する場合、以下のような式になります。

=Year(Fields!DateFieldX.Value)

ページ番号・総ページ数

 現在のページ、総ページを取得するフィールドが用意されています。

現在のページ:=Globals!PageNumber
総ページ:=Globals!TotalPages

プログラムフロー

 Microsoft.VisualBasic.InteractionクラスのIIFメソッドが使えます。(C#の三項演算子「?:」に類似します)。例えば、FieldAが偶数か奇数かによってデータを取得するフィールドをFieldBとFieldCで切り替える場合、以下のような式になります。

=IIF(Fields!FieldA.Value mod 2 = 0,  Fields!FieldB.Value ,  Fields!FieldC.Value )

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

著者プロフィール

バックナンバー

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

もっと読む

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