作成:小沢仁 株式会社レジェンド・アプリケーションズ
このチュートリアルで習うこと
- JasperReportsフィールドとは何か
- SQLクエリーからフィールドの定義
- Java Beansからフィールの定義
- フィールドとテキストフィールド
JasperReportsのレポートでは3つのオブジェクトに値を設定することができます:
- フィールド
- パラメータ
- 変数
Jaspersoft Studioではこれらのオブジェクトをデータソースクエリーで使われます。レポートでこれらのオブジェクトを使う場合は先ずStringやDoubleのようなJavaクラスとして宣伝する必要があります。宣伝されたフィールドは、レポートで使うことができます。
JasperReportsフィールドとは何
- アウトライン・ビューのフィールドを右クリックしてフィールドの作成を選択する。
デフォルト設定のフィールドが作成されます。 - プロパティ・ビューからフィールド名や型など、設定を変更します。
- フィールドにプロパティを設定する場合は、「詳細」タブを選択して、項目「プロパティ」の「...」ボタンを押下します。
注1:Jaspersoft Studioは、フィールドに設定されたプロパティを使いません。しかし、外部プログラム及びカスタムの追加機能で使うことはできます。
フィールド値はデータソースから取得されます。例えば、SQLクエリー文を実行した決壊をレポートに表示する場合は、フィールド名及びデータ型をSQLクエリーの実行結果のフィールド名及びデータ型を一致させます。レポートによって多くのフィールド(100項目以上)を表示することもあるので、Jaspersoft Studioではデータソースからフィールド宣言を作成するツールが用意されています。
レポートレイアウトでフィールドを使う場合は次のようにフィールドを指定します:
$F{<フィールド名>} <フィールド名>を使うフィールド名に置き換えてください。
注2:レポートの言語がJavaの場合(デフォルト)、フィールド値がnullの場合、式の評価中にエラーにならないようにするには、以下のように条件で確認します:
($F{myField} != null) ? $F{myField}.doSomething() : null
注3:レポートの言語がGroovy又はJavaScriptの場合は、null演算エラーの場合は空文字列を返す仕様になっていますのでJavaのようにnullチェックを行う必要はありません。
フィールドにStringやIntegerの他に構造を持つオブジェクトを設定することもできます。例えばJavaBeanをフィールドに設定することができます。このような場合、レポートに値を表示するにはStringに変換する必要があります。すべての内容を表示する場合は次のように空文字列と結合してオブジェクトを文字列に変換すると便利です。ただし、この場合は値がnullだと文字列「null」が返されます。
$F{myField} + ""
SQLクエリーからフィールドの定義
多くの場合はSQLクエリー文の実行結果をレポートに表示します。Jaspersoft StudioにはSQL文を書くのを支援するクエリーエディタとSQL文の実行結果からJaspersoft用フィールド宣言を行うツールが含まれています。
クエリーエディタはデータソースを利用します。正しいデータソースを使うようにしてください。
クエリーエディタを起動するには、アウトライン・ビューからレポート名を右クリックして、「データセットとクエリー...」を選択します。
Jaspersoft Studioはクエリーが定義されていない場合でも、データソースからデータを取得することができます。JasperReportsは以下のクエリー言語をサポートしています:
- CQL
- HiveQL
- JSON
- MongoDBQuery
- PL/SQL
- SQL
- XLS
- XPath
注4:SQL文が複雑の場合は、フィールド名の取得に時間が掛かる場合があります。
注5:フィールド名は一意である必要があります。SQL文の実行結果で列名が同名になった場合は、「AS」句を使って実行結果の列名を変えてください。
注6:SQL文を実行できない場合は、エラーメッセージが表示されます。
フィールドが多いと、レポートを作成するのに時間が掛かる場合があります。レポートに不要なフィールドを取得しないようにSQL文を書き換えるか、フィールド一覧から削除してください。保守を向上させるためには、SQL文を書き換えてフィールドを取得しないようにすることを推奨します。
「OK」ボタンを押下すると、フィールド一覧のフィールドがレポートレイアウト定義に含まれます。フィールド一覧からフィールドを削除して「OK」ボタンを押下すると、レポートレイアウト定義からも削除されます。
レポートレイアウト定義のフィールド名はアウトライン・ビューからも追加/変更/削除することができますが、フィールドを取得しないようにSQL文を書くことを推奨します。
Java Beansからフィールの定義
JasperReportsはJava BeanのようなSQL文以外からのデータソースを扱うことができます。JasperReportsでJava Beansを使う場合は、レコードをJavaコレクションにします。すべてのレコードは同じJavaクラスである必要があります。
クエリーデザイナーから「Java Bean」タブを選択して、Javaクラスのレポートで使うフィールドを登録します。
例えば、次のようなJavaクラスをレポートで使うとします:
com.legendapl.lakeel.examples.beans.PersonBean
次の手順でこのクラスからフィールドを登録します:
- 「名前」にJavaクラス名を入力して、「属性の読込み」ボタンを押下します。Jaspersoft Studioはクラスの情報を読込みます。
- Jaspersoft Studioが正しい情報を読み込んだか確認します。
- レポートで使う属性を選択して「追加」ボタンを押下します。
- Jaspersoft Studioは属性からフィールド定義を作成します。
- 任意ですが、「説明」に呼び出すメソッド名を記入することを推奨します。
本章では、SQL文とJava Beansからフィールド宣言を取得する説明をしましたが、この他にもHQLやXMLからフィールドを取得することもできます。
フィールドとテキストフィール
フィールドの値をレポートに表示する場合は、テキスト要素の式にフィールド名を指定します。値と異なる形式で表示する場合は表示形式を設定します。例えば日付や通貨の値を表示する場合は表示形式で表示する形式を指定します。
パレットビューからテキストフィールドをレポートレイアウトに配置して、表示するフィールドを設定することもできますが、アウトラインビューのフィールド一覧から表示したいフィールドをレポートレイアウトの配置することもできます。この場合は、Jaspersoft Studioは配置されたフィールが設定されたテキストフィールドを作成します。
Recommended Comments
There are no comments to display.
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now