【问题标题】:dynamic variable value jasper report动态变量值jasper报告
【发布时间】: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


【解决方案1】:

您可以像这样在 SQL 语句中定义变量本身:-

   SELECT SUM(@csum := @csum + TOTAL+PARTIAL)
   FROM (SELECT TOTAL, PARTIAL,@csum := 0
         FROM PRICE WHERE TOTAL > 0 
         ) a;

See this question and answer

【讨论】:

  • 你确定它可以在 jasper 报告中工作,因为每行上的变量总是有一个新值吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多