【发布时间】:2018-06-15 19:09:30
【问题描述】:
在 jasper-report 中:我试图将第一个(余额)字段与第二个(金额)字段相加,然后从第二个(余额)字段中减去结果。 谁能帮帮我?
喜欢图片:
我怎样才能每次都获得上一个(余额)字段
【问题讨论】:
标签: jasper-reports
在 jasper-report 中:我试图将第一个(余额)字段与第二个(金额)字段相加,然后从第二个(余额)字段中减去结果。 谁能帮帮我?
喜欢图片:
我怎样才能每次都获得上一个(余额)字段
【问题讨论】:
标签: jasper-reports
经过一些研究,我发现: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>
据我了解,您想要做的是:something = 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>
【讨论】: