SHOEISHA iD

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

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

5分でわかるActiveReports帳票

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

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

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

 単純なレポートの場合、比較的簡単なデザイン作業で実現することができました。ただし、実際のレポートにはいろいろな要望が存在します。例えば上記レポートについて、「売上金額を千円単位で表示したい」という要望が出てくるかもしれません。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 )

次のページ
Tableでのグループ化

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

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

もっと読む

この記事の著者

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

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

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

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

この記事をシェア

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

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング