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", "てすとです" ); // 指定したパラメータ値をセットする |
上記のプログラムを実際に実行すると、以下のように帳票上へ値が表示されます。

コメントを残す