0

一部のレポートを Crystal から Jasper に変換する必要がありますが、Groovy は頭痛の種です。複数の「if」を含む式があります。

if (cond) then expr1 else expr2 endif.

iReport ではこれが発生します(cond) ? expr1 : expr2が、別の if 条件があり、それを最初の条件の下に配置すると、エラーが発生します。アドバイスをいただけますか?ありがとうございました!

変換する式:

if not isnull({ZEM0000_T.PRUEFMERKMAL}) then
        text = {ZEM0000_T.PRUEFMERKMAL}
else
        text = ""
end if

if not isnull ({ZEM0000_T.ANWEISUNG1}) then
        text = text & Chr(13) & trim({ZEM0000_T.ANWEISUNG1})
end if

if not isnull ({ZEM0000_T.ANWEISUNG2}) then
        text = text & Chr(13) & trim({ZEM0000_T.ANWEISUNG2})
end if

if not isnull ({ZEM0000_T.ANWEISUNG3}) then
        text = text & Chr(13) & trim({ZEM0000_T.ANWEISUNG3})
end if

if not isnull ({@OT_NM_UT_2}) then
        text = text & Chr(13) & {@OT_NM_UT_2}
end if

formula = text
4

1 に答える 1

0

JasperReportsの式は、単一の式(つまり、Java / Groovyの単一のステートメント)に制限されています。実行するコードの長いスクリプトを与えることはできません。Crystal Reportsの式には多くのステートメントが含まれているため、コードをGroovyに変換するだけでは不十分であり、1つのステートメントにリファクタリングする必要もあります。

幸い、文字列を連結しているので、+演算子を使用して各ステートメントを結合できます。だからあなたのコメントからのコード

text = ($F{PRUEFMERKMAL} != null) ? $F{PRUEFMERKMAL} : "" 
text = ($F{ANWEISUNG1} != null) ? text + chr(13) + trim($F{ANWEISUNG1}) : text

このように見える必要があります:

(($F{PRUEFMERKMAL} != null) ? $F{PRUEFMERKMAL} : "") +
(($F{ANWEISUNG1} != null) ? text + chr(13) + trim($F{ANWEISUNG1}) : "")
于 2012-10-31T13:09:47.267 に答える