2012-06-14 235 views
22

私はへの初心者です。JasperReportsは、いくつかの小さなサンプルで作業しています。 "Fields"、 "Parameters"、 "Variables"は動的データを実演するのに非常によく使われているようです。だから私は彼らの違いが具体的に何かを尋ねることができますJasperReportsJasperReportsの変数、パラメータ、フィールドの違いは何ですか?

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

+1

他の回答に加えて、公式の[** JasperReports Library - Tutorial **](http://community.jaspersoft。com/wiki/jasperreports-library-tutorial)ここでは、[* Variables *](http://community.jaspersoft.com/wiki/jasperreports-library-tutorial#Variables)、[*パラメータ*](http://community.jaspersoft.com/wiki/jasperreports-library-tutorial#Parameters)および[* Fields *](http://community.jaspersoft.com/wiki/jasperreports-library-tutorial#Fields) 。 – informatik01

+3

** "iReport Ultimate Guide" **の "Chapter 6:Fields、Parameters and Variables" *を読むのにも役立つかもしれません**(ここではダウンロードできます)(http://community.jaspersoft.com/documentation)ダウンロードするには登録が必要です)。 – informatik01

答えて

14

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

あなたが通常行っていることは、レポートのさまざまな設定でパラメータマップまたはマップを設定することです。私は概要ページまたは(非常に最初の報告で)表紙のようなものがあれば、私はパラメータを使用します。

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

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

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

ボトムラインは非常によく似ていますが、フィールドにはJasperReportDataSourceが設定されています(そのデータソースにデータを入力すると頻繁に変更される可能性があります)。カバーページやカスタムJR設定に使用するパラメータ報告自体。彼らはかなり混乱するかもしれません。

これはちょっと役立ちます。

+0

すばらしい答えをありがとう、もう1つの質問は、データがリストに表示されるかどうか、フィールドにあるかどうか、Javaの型ではパラメータがプリミティブ型で、フィールドがコレクション用であるということですか? – Dreamer

+0

通常、パラメータはStringやプリミティブ型のような値を持つオブジェクトを保持します。フィールドは、豆、オブジェクトなどのコレクションを保持する可能性があります。 – Mechkov

+0

フィールドの量を可変にすることはできますか?それとも静的にしかならないのでしょうか?私は、レポートに提供されるデータに応じて、特定の量のフィールドを持つレポートを作成できますか? –

16

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

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

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

+0

ありがとうございます。私が見たすべてのサンプルは、ジャスパーレポートにフィールドとしてのデータソースのパラメータまたは結果を渡していますが、Javaクラスのインスタンスはどうですか?パラメータの束とフィールドの2つのリストを保持するレポートクラスを作成するとOKですか?インスタンス全体を渡すか、要素をレポートに分割する方が良いでしょうか?どちらが良いですか?どうもありがとう。 – Dreamer

+1

私はレポートクラスを作成する方が良いアプローチだと思います。レポートクラスはレポートの表現を抽象化することができ、レポートのデータモデルとして機能することができるためです。 – sperumal

+0

フィールドの量を可変にすることはできますか?それとも静的にしかならないのでしょうか?私は、レポートに提供されるデータに応じて、特定の量のフィールドを持つレポートを作成できますか? –

関連する問題