Jasper Reports - 使用 CalculationEnum.System 计算总数
Jasper Reports - calculation of total using CalculationEnum.System
我有 3 列(与数据一起从查询中获得)
|一个 |乙 | C |
| 5 | 15 | 20 |
| 15| 25 | 40 |
这些列的净总数计算如下:-
20 40 0.5(即 C 的总数 = A 的总数 / B 的总数)。如何使用 java 在碧玉报告中按要求计算总计。
为了计算列的总数 'C' ,我将计算枚举常量设置为 calculationEnum.SYSTEM
。将表达式设置为
expression.setText("new Double($F{" +A + "/" +B +"}.doubleValue())");
,说明对应的字段,new Double($F{A/B}.doubleValue())
不存在。为了消除这种情况,我在字段列列表中添加了该字段。但是随后显示相应字段的列不存在。
到目前为止我所做的是否正确?或者有什么更好的方法可以让我按要求计算总数。
字段 A 和 B 必须属于 class="java.lang.Number"
或其子 类 之一,如 java.lang.Double
要获得它们的总和,表达式为:
$F{A}.doubleValue() + $F{B}.doubleValue()
要计算 SUM($F{A}) / SUM($F{B})
你需要使用两个变量
<variable name="sumOfA" class="java.lang.Double" calculation="Sum">
<variableExpression><![CDATA[$F{A}]]></variableExpression>
<initialValueExpression><![CDATA[0]]></initialValueExpression>
</variable>
<variable name="sumOfB" class="java.lang.Double" calculation="Sum">
<variableExpression><![CDATA[$F{B}]]></variableExpression>
<initialValueExpression><![CDATA[0]]></initialValueExpression>
</variable>
然后在textField
做除法,记得在textField
上设置evaluationTime="Report"
,这样变量在显示前就已经计算好了。
<textField evaluationTime="Report">
<reportElement x="208" y="17" width="100" height="20" uuid="414e6633-58c5-4081-a04b-fe3973f29d96"/>
<textFieldExpression><![CDATA[$V{A}.doubleValue()/$V{B}.doubleValue()]]></textFieldExpression>
</textField>
创建两个变量,一个用于 A 的总和,一个用于 B 的总和。
然后添加一个包含以下表达式的文本字段:
($V{sumOfA}/$V{sumOfB})
我有 3 列(与数据一起从查询中获得)
|一个 |乙 | C |
| 5 | 15 | 20 |
| 15| 25 | 40 |
这些列的净总数计算如下:- 20 40 0.5(即 C 的总数 = A 的总数 / B 的总数)。如何使用 java 在碧玉报告中按要求计算总计。
为了计算列的总数 'C' ,我将计算枚举常量设置为 calculationEnum.SYSTEM
。将表达式设置为
expression.setText("new Double($F{" +A + "/" +B +"}.doubleValue())");
,说明对应的字段,new Double($F{A/B}.doubleValue())
不存在。为了消除这种情况,我在字段列列表中添加了该字段。但是随后显示相应字段的列不存在。
到目前为止我所做的是否正确?或者有什么更好的方法可以让我按要求计算总数。
字段 A 和 B 必须属于 class="java.lang.Number"
或其子 类 之一,如 java.lang.Double
要获得它们的总和,表达式为:
$F{A}.doubleValue() + $F{B}.doubleValue()
要计算 SUM($F{A}) / SUM($F{B})
你需要使用两个变量
<variable name="sumOfA" class="java.lang.Double" calculation="Sum">
<variableExpression><![CDATA[$F{A}]]></variableExpression>
<initialValueExpression><![CDATA[0]]></initialValueExpression>
</variable>
<variable name="sumOfB" class="java.lang.Double" calculation="Sum">
<variableExpression><![CDATA[$F{B}]]></variableExpression>
<initialValueExpression><![CDATA[0]]></initialValueExpression>
</variable>
然后在textField
做除法,记得在textField
上设置evaluationTime="Report"
,这样变量在显示前就已经计算好了。
<textField evaluationTime="Report">
<reportElement x="208" y="17" width="100" height="20" uuid="414e6633-58c5-4081-a04b-fe3973f29d96"/>
<textFieldExpression><![CDATA[$V{A}.doubleValue()/$V{B}.doubleValue()]]></textFieldExpression>
</textField>
创建两个变量,一个用于 A 的总和,一个用于 B 的总和。 然后添加一个包含以下表达式的文本字段:
($V{sumOfA}/$V{sumOfB})