5分でわかるActiveReports帳票(2013年度版)-動的なレポート
ActiveReports for .NET 7.0Jで作るサンプル帳票(5)
ダウンロード サンプルファイル (67.3 KB)
今回はActiveReportsのセクションレポートで動的な処理を行う方法について解説します。フィールド式やコードで表示内容をカスタマイズする方法や、データソースを変更する方法を紹介します。また、セクションレポートを単一のXMLファイルに保存する方法と、スクリプトを使って動的に処理する方法も紹介します。
本稿は、連載『5分でわかるActiveReports帳票(2007年度版)』(渡辺俊史・宮本奈紗 著)の増補改訂版です。
セクションレポート:動的な処理をするレポート
本記事の第1回と第3回ではセクションレポートの使い方を紹介しましたが、そこで紹介したレポートはデータベースから取得したデータをそのまま表示するものでした。今回はそのデータを加工し、動的に表示内容を変更する方法を紹介します。
データを加工する方法としては、以下のようなものがあります。
1)TextBoxコントロールのOutputFormatプロパティに書式を設定する
TextBoxコントロールには出力する値の書式を設定するためにOutputFormatプロパティが用意されております。こちらについては第3回の「コラム:書式について」をご覧ください。
2)対象コントロールのDataFieldプロパティに式を記述する
DataFieldプロパティに記述する式を「フィールド式」と言います。
3)ActiveReportsが提供するイベントに、データを制御するコードを記載する
4)計算フィールドを作成し、それをDataFieldプロパティに設定する
「計算フィールド」は、2の「フィールド式」を使った処理を、レポートデータソースに含めるものです。今回は詳しい説明を省略いたしますが、興味がある方は製品ヘルプの[概念]-[セクションレポートの概念]-[データ連結]-[計算フィールド]をご覧ください。
今回は、フィールド式とコードの使い方について解説します。
フィールド式
TextBoxなどのセクションレポートのコントロールには、DataFieldプロパティがあります。通常はここにデータソース内のフィールド名を設定します。
このときはフィールド名そのものではなく、フィールドを使用した式を記述することで、データを加工して表示することができます。
フィールド式の先頭には「=」をつけます。=の後には、フィールドを含めたC#言語構文の「式」を記述します。
例えば、金額を表すフィールドProductSalesがあるとします。これを千円単位で表示したい場合には以下のようにします。
=ProductSales/1000
文字列の加工に使用することもできます。OutputFormatプロパティを使った処理でも加工は可能ですが、フィールド式を使って単位「千円」をつけて表示したい場合、以下のようになります。このときの「+」はC#言語の文字列連結演算子です。
=ProductSales/1000 + "(単位千円)"
C#の式が使用できるので、三項演算子を使って簡単な条件判断を行うことも可能です。例えば、フィールド「ProductSales」の値が10000以上の場合は「一万円以上」、小さい場合は「一万円未満」と表示したい場合、以下のようになります。
=ProductSales => 10000 ? "一万円以上" : "一万円未満"
「フィールド式」と言っていますが、必ずしもフィールドを使用しなければならないわけではなく、.NET Framework標準のクラスも一部使うことができます。例えば、DateTime.Nowプロパティから現在の日付を取得し、AddDaysメソッドで1日追加した日付を表示したい場合、以下のようになります。
=System.DateTime.Now.AddDays(1).ToString("明日はd日")
この記事は参考になりましたか?
- この記事の著者
-
グレープシティ株式会社 ActiveReportsチーム(グレープシティカブシキガイシャ アクティブレポートチーム)
宮城県仙台市に本社を構えるグレープシティでは、日本の業務に適したシステムをより早く開発するためのソフトウェアを提供しています。エンドユーザーの利用しやすさ、幅広いユーザー環境への対応、そして何よりプログラマの作業を軽減することを一番に目指しています。 ActiveReportsは、帳票開発に必要なあらゆる機能を備えた当社を代表するコンポーネントの1つ。1998年の発売以来、日本だけでなく全世界で多数の帳票開発者に使用されています。製品開発は同チームが中心になり、「日本仕様」の厳しい要望を実現することを目指しています。...
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
