logo

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

最近のトラックバック

無料ブログはココログ

« Reports Connect for Salesforce / for kintoneグラフの出力 | トップページ

Reports Connect for Salesforce: json型式のパラメーターによるsubreportの作成方法

単純なSOQLでは望んだ値が出力できなかったり、思ったような値の表示ができないケースがあると思います。今回はそのような場合で役立つ、JSON形式でのパラメータの受け渡しによる、Apex側での作成・加工方法について紹介いたします。

今回の記事で作成したjrxmlファイルは↓からダウンロードできます。

「jtestp.jrxml」をダウンロード

最初にJSONについて説明します。帳票オブジェクトのデータの確認画面に「読み込んだデータの構造」が出てきますが、これがJSONデータです。

Photo_2

ここにもうひとつ例を書いて説明すると、JSONとは以下のように記述したデータの記法を指します。

[
 {
 "項目名1":"値1",
 "項目名2":"値2"
 },
 {
 "項目名1":"値3",
 "項目名2":"値4"
 },
 {
 "項目名1":"値5",
 "項目名2":"値6"
 }
]

↑のように、オブジェクトの配列のかたちでパラメータを作成します。(CSVファイルをJSONに変換したイメージ)

このようなJSON形式のデータをApex側で作成することで、ほぼ無制限に好きな値をレポートに出力できます。

それではJSONデータを利用したレポートの作成方法について解説します。


まずはサンプルとしてApexクラス「JsonReport」を作成します。

Reports ConnectにおけるApexとVisualforceコーディングについては、この記事この記事を参照してください。

見ての通り、String型の変数jstrにJSON形式のデータが代入され、それをパラメータとして渡しています。

Visualforceページを作成して、このdoPrint()メソッドを呼び出してください。

JSONの項目名やパラメータ名には好きな名前をつけてください。


次にjrxmlファイルの作成について解説します。

JSON形式のパラメータの値は、Subreportで利用ができます。

Subreportについては、この記事を参照してください。


子帳票のjtestを作成します。

子帳票ではパラメータの項目名をFieldsに登録をして、あとは好きなようにレイアウトしてください。

Ko

親帳票のjtestpを作成します。

Parametersに今回使用するパラメータ名を登録してください。

Photo_3

その後、作成したjtestのjrxmlファイルを指定して作成したSubreportを配置します。

そのSubreportのdata source expressionには


$P{contactList}!=null&&!$P{contactList}.equals("null")?new JRBeanCollectionDataSource((Collection)net.arnx.jsonic.JSON.decode($P{contactList})):null


と記述します。

上記記述により、パラメータで渡されたJSON文字列をサブリポート側ではCSVの行(実態はBeanの配列)のように扱えます。

Subreport Expressionには"jtest.jasper"と記述します。

またjtestpファイルのプロパティのImportsの横のボタンを押して設定を追加します。

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

net.sf.jasperreports.engine.data.*


最後に帳票オブジェクトtestを作成します。

メモ & 添付ファイルにjrxmlファイルを添付します。

パラメータに":" + "パラメータ名"を設定します。

帳票オブジェクトのSOQLは利用しない場合でも、空欄だとNullPointerExceptionが発生するため、なんらかの結果が出力されるSOQL文を登録してください。

Page

出力結果を見ればJSONの値が出力できていることが確認できます。

Photo_4

今回はコードに直接的に値を記述してJSONデータを作成しましたが、SOQLを発行してその結果を代入した変数の値を利用することも可能です。これによって、関連のないオブジェクトを基にした表の作成なども可能になります。

« Reports Connect for Salesforce / for kintoneグラフの出力 | トップページ

Force.com」カテゴリの記事

Reports Connect」カテゴリの記事

Salesforce」カテゴリの記事

コメント

コメントを書く

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

トラックバック

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

この記事へのトラックバック一覧です: Reports Connect for Salesforce: json型式のパラメーターによるsubreportの作成方法 :

« Reports Connect for Salesforce / for kintoneグラフの出力 | トップページ