ホーム › フォーラム › ReportsConnect for Salesforce › iReportのプレビューと実際に出力されるPDFの内容が異なる
-
投稿者投稿
-
2016年1月6日 4:53 PM #309a.suzuki参加者
数値項目の書式を設定しており、iReportのプレビューでは設定通りに表示されるものの、実際にSalesforceで帳票を出力すると設定通りに表示されません。
-3桁ごとにカンマをつける
-小数点以下を表示しない書式はプロパティーのpatternで設定していますが、PDFではカンマがつかず、小数点第1位が表示されてしまいます。
また、Text fieldで条件により表示する文言を変更しているのですが、レイアウト上横幅は問題ないはずなのに、4文字多い場合だと途中で改行されて表示されてしまいます。
これらは何が問題でしょうか。
2016年1月7日 6:27 PM #313fujita参加者a.zuzukiさま
iReportのプレビューと実際の帳票で表示が違う事象を、確認中です。
読まれているデータには違いがありますでしょうか。途中改行について、
Stretch with Overflowにチェックを入れても改行が正常になされないことがあります。
原因はフォントの大きさの計算が正しく行われないことがあるためです。
対策としてIPAmjフォントまたはIPAexゴシックフォントを使うことで正しく表示されます。
フォントの設定につきましては、こちらの記事を参照してください。
http://kptech.cocolog-nifty.com/blog/2012/11/reports-conne-1.htmlよろしくお願いします。
2016年1月8日 12:37 PM #316a.suzuki参加者fujita様
返信頂きありがとうございます。
フォントについてはインストールが必要とのことで、改めて確認させて頂きますが現状は添付ファイルのようになっています。出稿料金、代理店手数料、放映保証施設数について小数点が表示されてしまうのと、代理店手数料については「%」が非表示になってしまいます。(%はpatternのCustom Formatで設定しています– #,##0%)
ちなみに、その他条件が改行されてしまう項目です。
Attachments:
You must be logged in to view attached files.2016年1月8日 1:38 PM #318fujita参加者a.zuzukiさま
読み込むデータや実行環境が違うので、プレビューではうまく表示できても
サーバー上で表示させると、うまくいかないことがあるようです。
読み込むデータが数値であることを確認して、
PatternでNumberまたはCurrencyを選択し、
Decimal placesを設定し、Text Field Expressionを
new BigDecimal($F{XXXX})に書きえればうまく表示されるかと思います。よろしくお願いします。
2016年1月8日 3:19 PM #319a.suzuki参加者Text Field Expressionにnew BigDecimal($F{XXXX})と入力したところエラーなってしまいました。
読み込むデータは数値で、PattenはNumberを選択しています。2016年1月8日 5:00 PM #320a.suzuki参加者その他条件が改行されてしまう件ですが、指定のフォントにしたところ、改行せずに出力されました。
2016年1月8日 5:59 PM #321fujita参加者a.zuzukiさま
new BigDecimal($F{XXXX})と入力した場合のエラーですが
nullや空欄があると、数値に変換できずにエラーになる場合があります。下記のように、空欄とnullを排除する式を入れると改善するかもしれません。
試してみてください。
$F{○○}!=”null”&&$F{○○}.length()>0?new ●●($F{○○}):△△
○○=フィールド名
●●=クラス名(Integer,BigDecimalなど)
△△=好きな値(フィールドの値が空だった時に表示される)
例)$F{金額}!=”null”&&$F{金額}.length()>0?new BigDecimal($F{金額}):0また、こちらで改善しない場合、エラー内容を教えていただければ
原因が分かると思います。
よろしくお願いします。2016年1月12日 4:24 PM #322a.suzuki参加者例)の式の「金額」を「TotalPrice」に置き換えてPreviewを表示してみたところ、下記エラーが表示されました。
Error filling print… Error evaluating expression : Source text : $F{TotalPrice}!=”null”&&$F{TotalPrice}.length()>0?new BigDecimal($F{TotalPrice}):0
Caused by: org.mozilla.javascript.EcmaError: TypeError: Cannot find function length in object 200000. (bsg_order_form_for_mobile_2_1452582799287_998403#62)
Print not filled. Try to use an EmptyDataSource…
TotalPriceのField Classはjava.lang.Integerにしています。
2016年1月12日 6:00 PM #323fujita参加者a.suzukiさま
$F{TotalPrice}には何が入っていますでしょうか。
lengthが取れない(Stringでないデータ)と言っているように見えます。プレビューでお使いのデータはSalesforceからダウンロードしたものでしょうか。
(Salesforceからダウンロードしたデータは、全てのデータがStringとして扱われます)よろしくお願いします。
2016年1月13日 9:32 AM #324a.suzuki参加者Salesforceからダウンロードしたものを使用しています。
iReport実践ガイドに「Pattern」を使用すると値のフォーマットにマスクをかけることができ、式のクラスが適用するパターンに適合する場合のみ使用するとあります。
つまり、数字フォーマットに対するマスクを適用するには数値が、日付パターンを適用するには日付が必要になるとのことです。
これに基づき、Field Classをjava.lang.Integerに変更したのですが、java.lang.Stringに戻したところ、下記エラーが発生しました。Caused by: org.mozilla.javascript.EcmaError: TypeError: Cannot call property length in object 200000.0. It is not a function, it is “number”. (bsg_order_form_for_mobile_2_1452644728223_525262#62)
ちなみに、最初に教えて頂いたnew BigDecimal($F{XXXX})を設定してみたところ、下記エラーが発生しました。
Caused by: org.mozilla.javascript.EcmaError: ReferenceError: “BigDecimal” is not defined. (bsg_order_form_for_mobile_2_1452644879749_879130#62)
特に何も式を設定せずjava.lang.Stringにして$F{TotalPrice}のみとしたところ、テスト印刷と同じ表示でしたので、ReportConnectの場合は、全てがStringとして扱われるということなのですね。
2016年1月14日 10:24 AM #325fujita参加者a.suzukiさま
回答が遅くなりました。
式はそのままで、一度こちらを試してみてください。
Expression Class:java.lang.String
Pattern:Currency、Decimal Places:0よろしくお願いします。
2016年1月14日 2:45 PM #326a.suzuki参加者fujita様
指示頂いた通りに設定してみたのですが、同じエラーとなりました。
Caused by: org.mozilla.javascript.EcmaError: TypeError: Cannot call property length in object 200000.0. It is not a function, it is ”number”. (bsg_order_form_for_mobile_2_1452644728223_525262#62)
2016年1月14日 3:51 PM #327fujita参加者a.suzukiさま
もう一つ、確認していただきたいのですが
ReportInspectorのウィンドウの一番上、帳票名を選択した時の
プロパティで、Languageが「Javascript」になっていないでしょうか。
もしなっていたら「Groovy」または「Java」を選択してください。よろしくお願いします。
2016年1月14日 4:33 PM #328a.suzuki参加者iReport実践ガイドに「式を記述するデフォルトの言語はJavaですが、プロジェクトの設計にはJavaScriptかGroovyを使用することを推奨します。」とあったため、JavaScriptにしていました。
今まで教えて頂いた式は、全てGroovyまたはJavaであることが前提ということでしたか。大変失礼しました。変更して試してみます。 -
投稿者投稿
- このトピックに返信するにはログインが必要です。