在我使用 Tibco Jaspersoft 6.3 生成的报告中,我遇到了一个奇怪的问题。 我有一个数据源如下:
order_number - fiscal code - price - region_id
记录可以有相同的order_number,如下:
1 - xxyyzz - 10$ - 001
1 - mmnnxx - 5$ - 001
2 - kkhhff - 6$ - 001
3 - ppookk - 7$ - 001
1 - aayyzz - 10$ - 002
2 - llnnxx - 5$ - 002
2 - oohhff - 6$ - 002
2 - vvookk - 7$ - 002
对于具有相同
order_number
的每组记录,我有一个变量,它使用表达式计算名为 ticket_value
的值。此计算工作正常,我看到每个 order_number
的正确值。
我有基于区域的
price
和 ticket_value
的总和变量。
我创建了两个组,一组用于
region_id
,一组用于 order_number
。我计算 ticket_value
组页脚中的单个 order_number
以及 Region_id 页脚中每个区域的价格和 ticket_values
的总和。
每个
region_id
的价格总和值都是正确的,但我没有每个ticket_value
的正确的region_id
总和值,而且我不明白变量配置中的错误在哪里。
这里是使用的变量的定义:
<variable name="ticket_somma_numero_ordine" class="java.lang.Double" resetType="Group" resetGroup="Gruppo_NUMERO_ORDINE">
<variableExpression><![CDATA[$V{totale_importo_numero_ordine}.compareTo(new BigDecimal(36.15)) > 0 ? 36.15 : $V{totale_importo_numero_ordine}.doubleValue()]]></variableExpression>
<variable name="sommatoria_ticket" class="java.lang.Double" resetType="Group" resetGroup="Gruppo_REGIONE" incrementType="Group" incrementGroup="Gruppo_NUMERO_ORDINE">
<variableExpression><![CDATA[$V{sommatoria_ticket} + $V{ticket_somma_numero_ordine}]]></variableExpression>
<initialValueExpression><![CDATA[0.0]]></initialValueExpression>
</variable>
编辑:
我注意到 sum 变量
sommatoria_ticket
这个逻辑是错误的:查看上面的数据示例,有两条记录 order_number
= 1,其中 region_id
= 1;在这种情况下,sommatoria_ticket
的值加倍;如果记录为3,则值为x3...
似乎每个子组只显示一次
ticket_value
计算,但在计算 sommatoria_ticket
变量时,会针对子组的每一行进行计算。
我尝试更改变量的增量类型和重置类型,以及文本字段的评估时间,但问题没有解决
使用
calculation="Sum"
而不是显式地对表达式中的变量求和:
<variable name="sommatoria_ticket" class="java.lang.Double" resetType="Group" resetGroup="Gruppo_REGIONE" incrementType="Group" incrementGroup="Gruppo_NUMERO_ORDINE" calculation="Sum">
<variableExpression><![CDATA[$V{ticket_somma_numero_ordine}]]></variableExpression>
<initialValueExpression><![CDATA[0.0]]></initialValueExpression>
</variable>
您可以在 JasperReports 示例文档中查看一些示例。