パラメータの利用方法
「レポートに表組みデータを表示する方法」 では、レポートにデータテーブルでデータを与え、 表組みのデータを表示する方法を紹介しました。
ここではそこからもう一歩進んで、レポートにパラメータを渡す方法を紹介します。
そして、そのパラメータを使って表中のデータをフィルタリングしてみましょう。
具体的には、前回の記事で表示した表の中の City に関わるパラメータを渡して、該当の City をデータに持つレコードだけを表示するようにしてみましょう。
レポートでのパラメータの利用
レポートにはパラメータ (Parameters) という形で、追加情報を渡せるようになっています。
そのパラメータは、今回紹介するようにテーブルのフィルター条件などで積極的に使うことも良いですし、 あるいは単にレポートに値を表示するために使うことでも構いません。
ではさっそく、レポートにパラメータを定義して、プログラムからそのパラメータの値をセットする方法を説明します。
レポートデザイナの左側ペインで、パラメータ (Parameters) を右クリックします。そこでパラメータの追加 (Add Parameter...) を選択します。
パラメータの名前と方、及び追加の属性を設定します。
ここでは市 (City) の名前に関わるパラメータということで、cityNameReportParam という名前として、 データ型は Text、さらに空白を許可としています。
このあたりは適当に状況に合わせて変更してください。
次にレポート上にデザイナー内のパラメータエントリをドラッグアンドドロップします。
ドロップされたテキストボックスフィールドのプロパティから、 Expression をみるとパラメータをそのまま表示するように設定されていることがわかります。
パラメータが追加されたところで、次に表組み (Tablix) にフィルター条件を設定しましょう。
Tablix のプロパティーから、Filters を選択します。
表示されたダイアログでフィルター条件を設定します。
ここでは [City] フィールドがパラメータ (cityNameReportParam) と一致するものを表示する(それ以外は表示しない)という設定を行います。
以上で、レポートにパラメータを追加し、Tablix のフィルター条件を設定しました。
このように設定されたレポートに対して、パラメータに実際に値をセットするためには、プログラムから次のようにします。
using System.Collections.Generic;
...
// パラメータの追加
var reportParams = new List<ReportParameter>();
reportParams.Add(new ReportParameter("cityNameReportParam", "Berlin"));
this.reportViewer1.LocalReport.SetParameters(reportParams);
...
ここでは ReportParameter のリストを作り値を渡していますが、実際には要素は一個だけしか持っていないので今回に関して言えばリストで渡す必要はありません。 しかしながら、レポートを作っていると複数のパラメータを渡すほうが普通である場合が多いので、予めこのように複数に拡張することを考えても悪くないと思います。
さて、この結果実行すると確かに City 名 "Berlin" となるデータだけが表示されました。
以上でパラメータを利用したテーブルデータ (Tablix) のフィルタリングを紹介しました。
ちなみに今回はレポートのプロパティとしてフィルタ条件をパラメータとして渡しましたが、 このレポートはこの値だけ表示するといったことが決まっているのであれば、 たいていの場合データを作るときにフィルタリングしてしまったほうが無駄なデータの受渡しが無く効率は良いはずと思われます。
レポートの変更は大変簡便であるので、今回紹介した方法が有効である場合は多いですが、念のため。