2018年11月16日金曜日

レコード単位の計算(ireports)

なんてことない処理のはずがはまったので備忘録

要は、明細のA,B,Cの項目を合算して、Dに出したいというだけ。
手段はこれ以外あると思いますが、デザイナ環境と実行環境で動作が異なったため若干はまりました。
結果を残しておきます。

実装
KINGAKU_A,KINGAKU_B,KINGAKU_Cの計算をVariableで定義
表示フィールドにVariable名を設定


<variable class="java.lang.Double" incrementtype="Column" name="V_ROW_KINGAKU_GOUKEI" resettype="Column">
    <variableexpression>
    &lt;![CDATA[($F{KINGAKU_A}.equals(null)?0:new Double($F{KINGAKU_A}))+
    ($F{KINGAKU_B}.equals(null)?0:new Double($F{KINGAKU_B}))+
    ($F{KINGAKU_C}.equals(null) ? 0 : new Double($F{KINGAKU_C}))]]&gt;
</variableexpression>
</variable>

<textfield isblankwhennull="true" pattern="#,##0">
    <reportelement height="9" printwhengroupchanges="GroupName" width="48" x="695" y="0">
    <box leftpadding="3" rightpadding="3">
    <textelement markup="none" textalignment="Right" verticalalignment="Middle">
        <span fontname="IPA明朝">
    </span></textelement>
    <textfieldexpression class="java.lang.Double">&lt;![CDATA[$V{V_ROW_KINGAKU_GOUKEI}]]&gt;</textfieldexpression>
</box></reportelement></textfield>


0 件のコメント: