【发布时间】:2014-05-19 23:58:28
【问题描述】:
我不知道如何命名这个问题,我知道这只是一个简单而愚蠢的逻辑需要整理,但我可以解释我需要什么。我有一个碧玉报告脚本和查询,我需要根据从下面的查询中收集的值进行简单的计算
SELECT TOTAL, PARTIAL FROM PRICE WHERE TOTAL > 0
现在我需要将此值计算为 jasper 报告脚本中的以下表达式
VAR CALC += TOTAL + (PARTIAL) //as partial can be a -ve or +ve value
目前发生的情况是我没有找到一种方法来做到这一点,每当我将 TOTAL 的值分配给一个变量并尝试使用它时,它总是从 Query 中获取值并进行计算,而我需要它只存在一次,然后对其进行计算。为此,我尝试使用calculation="First",但这也始终给出第一个值并继续。我希望我能够很好地解决我的问题,请帮助
编辑
查询
SELECT RECEIPTS.DATENEW AS DATE,
TICKETS.TICKETID AS TICKETID,
PAYMENTS.PAYMENT AS PAYMENT,
PAYMENTS.METHOD AS METHOD,
PAYMENTS.TOTAL AS TOTAL,
CUSTOMERS.NAME AS NAME,
(SELECT SUM(P.TOTAL) FROM PAYMENTS AS P
INNER JOIN RECEIPTS AS R ON P.RECEIPT = R.ID
INNER JOIN TICKETS AS T ON R.ID = T.ID
INNER JOIN CUSTOMERS AS C ON T.CUSTOMER = C.ID
WHERE C.ID = CUSTOMERS.ID and P.PAYMENT IN ('debt','debtpaid', 'advance', 'cashrefund')) AS CTOTAL
FROM RECEIPTS
INNER JOIN TICKETS ON RECEIPTS.ID = TICKETS.ID
INNER JOIN PAYMENTS ON RECEIPTS.ID = PAYMENTS.RECEIPT
INNER JOIN CUSTOMERS ON TICKETS.CUSTOMER = CUSTOMERS.ID
WHERE
PAYMENTS.PAYMENT IN ('debt', 'debtpaid', 'advance', 'cashrefund')
....
....
WHERE -TOTAL > 0
变量
<variable name="DUES" class="java.lang.Double" resetGroup="Customer" resetType="Group" calculation="Nothing">
<variableExpression><![CDATA[$F{CTOTAL} + $F{TOTAL}]]></variableExpression>
<initialValueExpression><![CDATA[new Double(0.0)]]></initialValueExpression>
</variable>
输出
【问题讨论】:
-
您能否举例说明查询返回的数据以及变量值应如何随每一行变化?
-
正如我上面解释的,返回的数据是简单的双精度值,我需要将其用作
value = value + anotherVal;,因此从某种意义上说,每行报告的值变量都会相应地更改
标签: java jasper-reports