在jasper-report中:我试图将第一个(余额)字段与第二个(金额)字段相加,然后从第二个(余额)字段中减去结果。 有谁可以帮助我?
喜欢图片:
我怎样才能每次都获得前一个(余额)字段
答案 0 :(得分:0)
经过一些研究,我发现了这一点:Getting a previous record's value (for calculation in variables, etc)
引用该文章:
变量按照声明的顺序递增,因此您可以利用此顺序来跟踪"之前的"记录价值。 您需要两个报告变量:一个用于保存当前值,另一个用于保存以前的值。诀窍是声明"之前的值"在"当前值之前的变量"变量并使第一个副本的第二个像这样:
<variable name="INITIAL" class="java.math.BigDecimal" resetType="Report" calculation="Nothing">
<variableExpression><![CDATA[$V{AAA}]]></variableExpression>
<initialValueExpression><![CDATA[new BigDecimal(0)]]></initialValueExpression>
</variable>
<variable name="AAA" class="java.lang.Integer" resetType="Report" calculation="Nothing">
<variableExpression><![CDATA[$F{FieldA}]]></variableExpression>
</variable>
当然,如果您要创建比较计算,那么您需要第三个变量来计算两者之间的差异:
<variable name="DELTA" class="java.lang.Integer" resetType="Report" calculation="Nothing">
<variableExpression><![CDATA[$V{AAA}-$V{INITIAL}]]></variableExpression>
</variable>
根据我的理解,你想要做的是:某事= balance2 - (balance1 + amount2)。
以下应该适合你:
<variable name="PREVIOUS" class="java.math.BigDecimal" resetType="Report" calculation="Nothing">
<variableExpression><![CDATA[$V{CURRENT}]]></variableExpression>
<initialValueExpression><![CDATA[new BigDecimal(0)]]></initialValueExpression>
</variable>
<variable name="CURRENT" class="java.lang.Integer" resetType="Report" calculation="Nothing">
<variableExpression><![CDATA[$F{BALANCE}]]></variableExpression>
</variable>
<variable name="SOMETHING" class="java.lang.Integer" resetType="Report" calculation="Nothing">
<variableExpression><![CDATA[$F{BALANCE}-($V{PREVIOUS}+$F{AMOUNT})]]></variableExpression>
</variable>