web-dev-qa-db-ja.com

JasperReportsの変数、パラメーター、フィールドの違いは何ですか?

私はJasperReportsの初心者で、いくつかの小さなサンプルに取り組んできました。 「フィールド」、「パラメーター」、「変数」は、動的データを示すために非常に一般的に使用されているようで、見た目も似ています。 JasperReportsの違いは何ですか?

変数はJasperレポート内で定義されたものであり、動的に変更できると思います。パラメータは外部ソース(Java..etc)から取得したもので、フィールドはエンティティ(データベーススキーマ、クラスエンティティ)用ですが、私の理解は大丈夫だとは思いません。

30
Dreamer

私のJasperReportsでの個人的な経験から、パラメーターとフィールドを最もよく使用すると推測できます。パラメータとフィールドは、コードから入力できる、つまりレポートを生成するときに、メモリの場所または値です。

通常は、レポートのパラメータマップにさまざまな設定を設定します。概要ページまたはカバーページ(レポートの最初)がある場合、パラメーターを使用します。次のようなものです。

parameters.put("authorName", author); //where authorName is a parameter you have created in your JRXML template.

次に、カスタム"variables"または、JasperReportsから提供された変数を使用している可能性があります。これらの有用な変数の一部は、PAGE_COUNTおよびPAGE_NUMBERです。彼らは追跡します...レポートのページ数とページ番号。もちろん、カスタム変数を持つことができます。

フィールドは、データが頻繁に変更される場所で使用されます。これらはパラメータと非常に似ていますが、反復ごとにデータが変わる可能性があります。同様に、フィールドは、ある反復ではgermanCarオブジェクトのリストであり、次の反復ではjapaneseCarオブジェクトのリストである場合があります。私はフィールドを使用して、変更される可能性のあるCarオブジェクトのリストを保持します。

一番下の行はパラメータであり、フィールドは非常に似ていますが、フィールドはJasperReportDataSourceから入力されます(そのため、データソースに入力するときに頻繁に変更される可能性があります)。レポート自体。彼らはかなり混乱するかもしれません。

これが少し役立つことを願っています!

20
Mechkov

ParametersはJasperReportsへの単純な入力です。使用する前に、JasperReportでパラメーターを定義する必要があります。変数の値を表示したり、ブール式の一部として使用したり、サブレポートに渡すこともできます。これは、SQLクエリへの入力になります。

フィールドは単純な変数定義です。これらは、レポートに渡されるデータソースオブジェクトのインスタンス変数と考えることができます。データソースがマップの場合は、キー名にすることもできます。 SQLに基づいてデータセットを作成するようにJasperReportを構成する場合、FieldsはResultSetの列名です。 Fieldsを使用して、実行されたSQLクエリの結果セットを表示します。

変数は、ジャスパーレポート内に存在する別の種類の変数であり、入力ではありません。これらは、特定のフィールド(上記で定義)の合計または平均を計算するために使用されます。変数を使用して、フィールドに対して他の多くの定義済み計算関数を実行できます。

22
sperumal