[C#,VS2010]CrystalReportsで帳票レイアウト側にパラメータを渡す

CrystalReportsではDataSetを使用して帳票に印字するデータを渡します。通常はこれで問題ないのですが、印字する帳票によってはDataSetに依存しないプログラム指定のパラメータ値を帳票に渡したい場合もあります。

このような場合CrystalReportsには「パラメータフィールド」というものを使用して、データを渡す事が可能です。パラメータフィールドは通常、特定のデータのみを印字する等のデータ絞込み用の式パラメータや、データセットに依存しない印字データ(ヘッダ印字項目等)で使用されます。


それでは、パラメータフィールドを使用した帳票作成の手順を確認して行きましょう。


rptファイルを画面に表示させた状態で、メニューバーから「CrystalReports->フィールドエクスプローラー」を選択します。


フィールドパラメータを右クリックし、新規を選択します。



パラメータの名前を指定し、OKボタンをクリックします。



パラメータフィールドの下に、作成したパラメータが表示されます。
帳票上にこのパラメータを印字したい場合は、ドラッグしてレイアウトに貼り付けます。





また、もしパラメータを印字データの絞込みで使いたい場合は、レイアウトを右クリックし、レポート->選択式を選択します。


その後、式ワークショップウィンドウで絞り込み条件を指定できます。
下記の例では注文IDが指定されたパラメータと一致するデータのみを印刷します。





プログラム側では、以下の形で値をセットします。
SetParameterValue()をコールするだけですが、注意点は必ずSetDataSource()・Refresh()の後で値のセットをしなければなりません。
この順序を入れ替えてしまうと、せっかくセットした値がクリアされてしまい、印刷処理の実行時に”パラメータ値が有りません”のエラーダイアログが表示されます。

DataTable table = new DataTable();
table.add( ... );
 
// 印字データをセット
crystalReport1.SetDataSource( table );
crystalReport1.Refresh();
crystalReport1.SetParameterValue( "testParam", "てすとです" );  // 指定したパラメータ値をセットする




上記のプログラムを実際に実行すると、以下のように帳票上へ値が表示されます。

関連記事

コメントを残す

メールアドレスが公開されることはありません。