从动态报告中的上一个字段中减去两个字段

时间:2018-06-06 08:42:16

标签: jasper-reports

在jasper-report中:我试图将第一个(余额)字段与第二个(金额)字段相加,然后从第二个(余额)字段中减去结果。 有谁可以帮助我?

喜欢图片:

like the image

我怎样才能每次都获得前一个(余额)字段

1 个答案:

答案 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>