iReportのプレビューと実際に出力されるPDFの内容が異なる

ホーム 掲示板 ReportsConnect for Salesforce iReportのプレビューと実際に出力されるPDFの内容が異なる

このトピックは 2 発言者 で 13 件の返信 、  a.suzuki 8 年と 3 ヶ月 前 に最終更新されました。

14投稿中1~14 14件表示
  • 作成者
    投稿
  • #309

    a.suzuki
    参加者

    数値項目の書式を設定しており、iReportのプレビューでは設定通りに表示されるものの、実際にSalesforceで帳票を出力すると設定通りに表示されません。
    -3桁ごとにカンマをつける
    -小数点以下を表示しない

    書式はプロパティーのpatternで設定していますが、PDFではカンマがつかず、小数点第1位が表示されてしまいます。

    また、Text fieldで条件により表示する文言を変更しているのですが、レイアウト上横幅は問題ないはずなのに、4文字多い場合だと途中で改行されて表示されてしまいます。

    これらは何が問題でしょうか。

    #313

    fujita
    参加者

    a.zuzukiさま 

    iReportのプレビューと実際の帳票で表示が違う事象を、確認中です。
    読まれているデータには違いがありますでしょうか。

    途中改行について、
    Stretch with Overflowにチェックを入れても改行が正常になされないことがあります。
    原因はフォントの大きさの計算が正しく行われないことがあるためです。
    対策としてIPAmjフォントまたはIPAexゴシックフォントを使うことで正しく表示されます。
    フォントの設定につきましては、こちらの記事を参照してください。

    http://kptech.cocolog-nifty.com/blog/2012/11/reports-conne-1.html

    よろしくお願いします。

    #316

    a.suzuki
    参加者

    fujita様

    返信頂きありがとうございます。
    フォントについてはインストールが必要とのことで、改めて確認させて頂きますが現状は添付ファイルのようになっています。

    出稿料金、代理店手数料、放映保証施設数について小数点が表示されてしまうのと、代理店手数料については「%」が非表示になってしまいます。(%はpatternのCustom Formatで設定しています– #,##0%)

    ちなみに、その他条件が改行されてしまう項目です。

    Attachments:
    You must be logged in to view attached files.
    #318

    fujita
    参加者

    a.zuzukiさま

    読み込むデータや実行環境が違うので、プレビューではうまく表示できても
    サーバー上で表示させると、うまくいかないことがあるようです。
    読み込むデータが数値であることを確認して、
    PatternでNumberまたはCurrencyを選択し、
    Decimal placesを設定し、Text Field Expressionを
    new BigDecimal($F{XXXX})に書きえればうまく表示されるかと思います。

    よろしくお願いします。

    #319

    a.suzuki
    参加者

    Text Field Expressionにnew BigDecimal($F{XXXX})と入力したところエラーなってしまいました。
    読み込むデータは数値で、PattenはNumberを選択しています。

    #320

    a.suzuki
    参加者

    その他条件が改行されてしまう件ですが、指定のフォントにしたところ、改行せずに出力されました。

    #321

    fujita
    参加者

    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

    また、こちらで改善しない場合、エラー内容を教えていただければ
    原因が分かると思います。
    よろしくお願いします。

    #322

    a.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にしています。

    #323

    fujita
    参加者

    a.suzukiさま

    $F{TotalPrice}には何が入っていますでしょうか。
    lengthが取れない(Stringでないデータ)と言っているように見えます。

    プレビューでお使いのデータはSalesforceからダウンロードしたものでしょうか。
    (Salesforceからダウンロードしたデータは、全てのデータがStringとして扱われます)

    よろしくお願いします。

    #324

    a.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として扱われるということなのですね。

    #325

    fujita
    参加者

    a.suzukiさま

    回答が遅くなりました。
    式はそのままで、一度こちらを試してみてください。
    Expression Class:java.lang.String
    Pattern:Currency、Decimal Places:0

    よろしくお願いします。

    #326

    a.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)

    #327

    fujita
    参加者

    a.suzukiさま

    もう一つ、確認していただきたいのですが
    ReportInspectorのウィンドウの一番上、帳票名を選択した時の
    プロパティで、Languageが「Javascript」になっていないでしょうか。
    もしなっていたら「Groovy」または「Java」を選択してください。

    よろしくお願いします。

    #328

    a.suzuki
    参加者

    iReport実践ガイドに「式を記述するデフォルトの言語はJavaですが、プロジェクトの設計にはJavaScriptかGroovyを使用することを推奨します。」とあったため、JavaScriptにしていました。
    今まで教えて頂いた式は、全てGroovyまたはJavaであることが前提ということでしたか。大変失礼しました。変更して試してみます。

14投稿中1~14 14件表示

このトピックに返信するためにはログインしなければなりません。