2010年3月26日金曜日

JasperReportsで四則演算

ACCESSのレポートで列AとBを足したい場合は非連結のテキストボックスを設けて

Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer)
    テキストボックス = A + B
End Sub

とすればA+Bの計算結果をテキストボックスに表示する事が出来ましたが、
(式エディタは面倒なので使ってませんでした)
JasperReportsでやってみた所、うまくいかずはまりました。

まず、ACCESSと同じ感覚で以下の様にして

 $F{A} + $F{B}

レポートのコンパイルを行うとこんなエラーが

The operator + is undefined for the argument type(s) java.lang.Integer, java.lang.Integer

Integerでは + 演算子が使えないという内容でしたので今度は

 $F{A}.intValue() + $F{B}.intValue()

とした所

Cannot cast from int to Integer

というエラーに...

エラーの内容を元にWebで調べてみたのですが、英語での情報しかない上に、「データソースの段階で計算しておけばいいじゃない?」。というような内容であまり参考にはならずで、あきらめようとしていたのですが、どうやらJavaの文法が使えそうな気がしてきたので

Integer.valueOf($F{A}.intValue() + $F{B}.intValue())

の様にしてみた所うまく表示されるようになりました。
VariablesではIntegerのまま使えるのになぜ?という感じではありますが一応解決です。

1 件のコメント:

匿名 さんのコメント...

この記事で救われました。ありがとうございます