logo

サイト内検索
ココログ最強検索 by 暴想

最近のトラックバック

無料ブログはココログ

« Reports Connect for Kintone テーブルのデータの読込 | トップページ | Reports Connect for Kintone 画像の動的な設定 »

Reports Connect for Kintone テーブルのデータの読込その2

前回Reports Connect for Kintone テーブルのデータの読込で、テーブルを含むデータの取り扱いについて解説しましたが、今回はテーブルのデータをサブリポートを使用して読み込む方法について解説します。

前回の方法よりも少々複雑ですが、この方法を用いれば、一つの帳票に複数のテーブルを含む帳票も作成可能になります。

今回のReports Connectの帳票レコードの設定は以下のとおりです。

20131114_17h35_34
前回と異なるのは、「テーブル」への設定が無い事と、親JRXMLファイル名に指定がある事です。
親JRXMLファイル名に関してはのちほど、解説しますので、とりあえずは、データのアプリIDと対象レコード番号、ログイン、パスワードを設定した状態でデータの確認のボタンを押します。

すると、今回は2つのFile CSV Datasourceが出力されます。

20131114_17h45_21

上のDatasourceがヘッダー部分、下がテーブル部分だという事がわかります。

これらを使用して、親と子の2つの帳票を作成し、親の帳票の一部に子の帳票をsubreportとして組み込む形で1枚の帳票デザインを組み立てます。

それでははじめに、下のテーブル部分のCSVDatasourceを使用して明細部分の帳票をiReportで作成する事にしましょう。

これは、前回の帳票の明細部分のみを抜き出した(PageHeaderやPageFotter等のバンドが無い)帳票として作ります。

20131114_17h52_23

次に、親の帳票を作成します。

こちらは、逆に、前回の帳票の明細部分を取り除いたものを作ります。

CSVから作成されたFieldのうち「明細」はサブクエリーからのコレクションオブジェクトが返るFieldです。そこで、このFieldのプロパティField Classを、java.lang.Objectに変更します。

20131114_16h52_20

次に、明細の入るスペースを作ります。明細部分のColumn headerとColumn footerを削除してdetailのバンドを最大限縦に広げます。

20131114_18h04_13

できたdetailのスペースにパレットのウィンドウからSubreportをドラッグアンドドロップします。

20131114_18h08_47

すると、Subreport Wizardのダイアログが開きます。

WizardのStep1では、Use an existing reportをチェックして先ほど作成したContactsのjrxmlファイルを指定します。

20131114_16h53_49

Step2ではUse a JRDatasource Expressionを選択し、横のボタンを押します。

Rc3dev06

Expression Editorが開きますので、ここに以下のような記述を設定してください。

$F{明細}!=null&&!$F{明細}.equals("null")?new JRBeanCollectionDataSource((Collection)$F{明細}):null

20131114_16h56_43
これは、ContactsのFieldに返ってくるContactオブジェクトのコレクションを、このサブリポートがDatasourceとして使用するための指定です。コレクションの中身が空の時はサブリポートに空値を与えます。
Applyを押して保存します。

この先のStep3、Step4は次へを押してとりあえずWizardを終了します。

できたSubreportは大きさを広げてDetailのいっぱいを占める大きさに調整します。

20131114_17h24_39

サブリポート側のデザインが横幅全体を前提としているので、サブリポートの横幅はページいっぱいまで広げておきます。

次に、先ほど指定した、JRBeanCollectionDataSourceを参照できるように、Importsの指定を行います。

リポートのプロパティのImportsの横のボタンを押して設定を追加します。

20131114_17h13_32

開いたダイアログのAddボタンを押して、以下のパッケージを設定してください。

net.sf.jasperreports.engine.data.*

 

次に、Subreportのjrxmlファイルの指定を変更します。SubreportのプロパティのSubreport Expressionの横のボタンを押してExpression Editorを開きます。

開いた状態では、個々の記述は以下のようになっていると思います。

 $P{SUBREPORT_DIR} + "estimatesdms.jasper"

estimatesdmsの部分はサブリポートに付けた名前です。

ここの、$P{SUBREPORT_DIR} + の部分を消します。

20131114_18h24_06

Reports ConnectではSubreportは親のReportと同じフォルダーに保存されるため、上記のような設定にする必要があります。

了解を押して保存します。

これで、Report accountsができました、この段階で、Previewを押して結果を確認したいところですがPreviewは

  Unable to get value for field '明細' of class 'java.util.Collection'

というエラーになってしまします。

これは、Files CSV Datasourceでは入れ子になったCollectionの構造を表現できないためです。

では、実際に出来上がったjrxmlファイルをReports Connectの帳票レコードに添付して印刷してみましょう。

出来上がった2つのjrxmlファイルを帳票に添付します。

Subreportを使用する場合は、親のjrxmlファイルの名前を「親JRXMLファイル名」に指定してください。

印刷テストボタンを押すと帳票が出力されました。

20131114_18h28_30

今回はテーブルの数はひとつでしたが、この方法を使えば、1枚の帳票に複数のテーブルを表示するような複合的な帳票を作成することができます。

なお、今回作成したjrxmlファイルはこちらからダウンロードできます。

estimatesdms.jrxml

oyaestimate.jrxml

« Reports Connect for Kintone テーブルのデータの読込 | トップページ | Reports Connect for Kintone 画像の動的な設定 »

Kintone」カテゴリの記事

Reports Connect」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/1482716/53933947

この記事へのトラックバック一覧です: Reports Connect for Kintone テーブルのデータの読込その2:

« Reports Connect for Kintone テーブルのデータの読込 | トップページ | Reports Connect for Kintone 画像の動的な設定 »