第3回:見積書の作成

 
iReportの理解を深めるために
   こんにちは。ビーブレイクシステムズの横井です。今回は第2回で解説した基本操作から一歩進んで、見積書を作成しながらiReportについての理解を深めて行きましょう。


見積書の作成の事前準備

   今回作成する見積書では、内訳部分の内容をデータベース(注1)から取得しますので、あらかじめ以下のようにテーブルを作成しておきます。

テーブルの生成
CREATE TABLE ESTIMATE(
ESTIMATE_ID VARCHAR PRIMARY KEY NOT NULL,
PRODUCT_NAME VARCHAR NOT NULL,
COUNT INTEGER,
PRICE INTEGER,
NOTE VARCHAR);

データの投入
INSERT INTO ESTIMATE VALUES('1','製品A',8,8000,'');
INSERT INTO ESTIMATE VALUES('2','製品B',9,9000,'');
INSERT INTO ESTIMATE VALUES('3','製品C',10,10000,'');
INSERT INTO ESTIMATE VALUES('4','製品D',11,11000,'');
※注1:本連載ではデータベースとしてPostgreSQL 7.4.6を使用していますが、JDBCで接続可能なデータベースであれば何でも構いません。
データソース設定

   次に、作成したテーブルをiReportから参照できるようにデータソースの設定を行います。メニューから「データソース→コネクション / データソース」を選択し、「Connections / Datasources」ダイアログで「New」を選択します。先ほど作成したテーブルと環境を合わせてJDBCの接続設定を行い、「Test」を押して接続が確認できたら「Save」で設定を保存します(図1)。

データソース接続設定
図1:データソース接続設定


   JDBCの接続設定ができましたら、メニューから「ビルド→有効な接続の設定」を選択して、作成したデータソースを選択します。

 
テンプレートXMLの作成

   図2が今回作成するテンプレートXMLの完成イメージです。図2にならって各コンポーネントを配置してください。もし、わからない点などありましたら、完成版のテンプレートXML(estimate.zip)をダウンロードして展開し、メニューから「ファイル→開く」を選択して完成版のレイアウトを読み込んで参考にしてください。

作成するXMLテンプレート
図2:作成するXMLテンプレート


Text  estimate.zip  ※右クリックから名前を付けて保存してください
(1)静的文字列

   第2回の説明でも出てきた静的な文字列です。水平、垂直方向の表示位置、ボーダーなどの設定が可能です。今回の例では、日本語を使用するために、テンプレートXMLを以下のように外部フォントを指定(注2)するよう直接修正しています。

<font fontName="MS 明朝" pdfFontName="C:/WINDOWS/Fonts/msmincho.ttc,1" size="18" isBold="true" isItalic="false" isUnderline="false" isPdfEmbedded ="true" pdfEncoding ="Identity-H" isStrikeThrough="false" />
※注2:フォントのパスは環境に合わせて変更してください。
(2)図形

   線分、四角形、四角形(角丸)、円形が配置できます。今回の例では、線分と四角形(角丸)を使用しています。


(3)フィールド

   フィールドはデータベースやBeanなどの外部リソースからのデータの取り込みのための形式で、"$F{フィールド名}"で定義します。例として、先ほど作成したテーブルのデータを読み込むための設定を行います。メニューから「データソース→レポート クエリ」を選択するとウィンドウが開きます。「Report SQL query」タブを選択し、図3のように"select * from estimate;"と入力することで、先ほど作成したテーブルのフィールドが読み込まれます。

SQLクエリ画面
図3:SQLクエリ画面
(画像をクリックすると別ウィンドウに拡大図を表示します)


   これらのフィールドを使用する際には、フィールドアイコンを選択してバンドに配置し、図4のように「Textfield expression」に"$F{フィールド名}"と定義を行います。また「Create」ボタンを押して「Pattern」を選択することで、カンマ区切り、桁数あわせなどの表示パターンを指定することもできます。

フィールドの定義
図4:フィールドの定義


 
(4)パラメータ

   パラメータはJavaから任意の値を渡す場合に使用する形式で、"$P{パラメータ名}"で表現されます。今回の例では顧客名の部分に使用しています。パラメータを使用する際には、パラメータアイコンを選択し、「Parameters」タブを選択します。「新規」を選択して、図5のように入力するとCLIENT_NAMEというパラメータが利用可能になります。また、パラメータの指定が無かった場合のデフォルト表示用に「Default value expression」に"NO INPUT"と定義しておきます。

パラメータの設定
図5:パラメータの設定


   これらのフィールドを使用する際には、フィールドアイコンを選択して配置し、図6のように「Textfield expression」に"$P{パラメータ名}"と定義を行います。また、図6を見るとわかるように、「Textfield expression」では"御中"という文字列の連結を行っています。このように「Texfield expression」では任意のJavaプログラムを記述することができます。

フィールドの定義
図6:フィールドの定義



(5)変数

   ここでいう変数とは、iReport内部で使用される値で、"$V{変数名}"で表現されます。デフォルトでページ番号やカラム番号といった変数が定義されています。変数を使用する際には、パラメータアイコンを選択し、「Variables」タブを選択します。「新規」を選択して、図7のように入力するとSUBTOTALというパラメータが利用可能になります(注3)。

注3:以下の例ではレポート内に存在する$F{count}と$F{price}を計算して、商品ごとの小計を計算しています。
変数の定義
図7:変数の定義
(画像をクリックすると別ウィンドウに拡大図を表示します)

 
実行
   それでは実行アイコンを選択して、作成したテンプレートXMLからPDFを出力してみましょう。図8のように顧客名以外が正常に出力されれば成功です。顧客名をパラメータとしてJavaプログラムから渡す方法については次回で説明します。

作成したPDFファイル
図8:作成したPDFファイル


その他の機能紹介

   ここでは、今回の見積書作成では使用しなかったいくつかの機能について紹介します。


グループ

   グループとは任意の単位で表示部をまとめることで、任意の範囲にヘッダー、フッターを設定するための機能です。グループアイコンを押して、グループを作成すると"***groupHeader"と"***groupFooter"というバンドが新たに現れ、カテゴリ毎にヘッダー、フッターが設定できるようになります。


グラフ

   この機能を利用すると出力にグラフを含めることができます。グラフアイコンを選択してグラフを表示したい場所に配置し、表示したいグラフのタイプ、データ、プロパティを設定します。


サブレポート

   サブレポートとは帳票中に別の帳票を埋め込むための機能です。サブレポートでは埋め込み元となる帳票と、埋め込む帳票をそれぞれ別のテンプレートXMLとして定義し、一方の帳票に組み込んで使用することができます。この機能を使用すると、より複雑なレイアウトの帳票を作成することができます。


背景の設定

   帳票の背景を設定するための機能です。デフォルトではbackgroundバンドは表示されていませんので、バンドアイコンを選択し、「Band height」でバンドの高さを設定します。編集エリアに「background」バンドが表示されますので、画像でもテキストでも任意の背景が設定できます。


テキストへのスタイルの設定

   テキストの一部分のみスタイルを変更することができます。例えば、"お見積書"という静的な文字列で"お"のみを緑色にする場合は、「Font」タブで「Is styled text」にチェックを入れて、「Static Text」に以下のように記述します。

<style forecolor="green">お</style>見積書
まとめ

   今回まででiReportを使ったテンプレートXMLの作成のイメージが掴めていただけたかと思いますが、いかがでしょうか。ここで紹介しきれなかった機能については、JasperReportsのデモに含まれるテンプレートXMLをiReportに読み込ませることで、イメージが掴めるのではないかと思います。

   次回がiReportの説明の最後になりますので、作成したテンプレートをJavaアプリケーションやWebアプリケーションへ組み込む方法について説明します。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值