当前位置: 首页 > 知识库问答 >
问题:

动态变量值jasper报表

秦经义
2023-03-14

我不知道这个问题怎么命名,我知道这只是一个简单而愚蠢的逻辑需要整理,但我可以解释我需要什么。我有一个jasper报告脚本和查询,在其中我需要根据从下面的查询中收集的值进行一个简单的计算

SELECT TOTAL, PARTIAL FROM PRICE WHERE TOTAL > 0

现在我需要在jasper报表脚本中计算这个值作为下面的表达式

VAR CALC += TOTAL + (PARTIAL) //as partial can be a -ve or +ve value

目前的情况是,我没有找到一种方法来做到这一点,每当我给一个变量赋值total并尝试使用它时,它总是从查询中获取值并进行计算,而我只需要它在那里出现一次,然后再对它进行计算。为此,我尝试使用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>

输出

共有1个答案

魏毅
2023-03-14

您可以在SQL语句中定义变量本身,如下所示:-

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

查看此问答

 类似资料:
  • 我想生成jasper报表,用于打印在固定大小的文具上。我创建了html表,并将所有的值放在其中,根据我的要求,现在我想通过Java打印,所以我现在使用了jasper报告,因为我有列,是变化的时间。根据我的要求,我在网上搜索,我得到了动态的jasper是解决方案,但由于方法添加列需要列名和传递变量,这是从setter getter方法,但我的整个列是动态的,那么我如何生成setter getter方

  • 有人知道我们是否可以在主报表中设置全局变量,并让子报表使用这些变量吗? 在我的情况下,我有一个非常复杂的报告(主报告,然后很少的子报告,然后在这些子报告中...其他子子报告(像这样的3-5级)。

  • 我尝试定义一个默认的变量log4j.encodinglog4j2.xml: 我将其用作在运行时解析的变量: 此配置导致以下错误: 但是,当我使用非动态变量(即${sys:log4j.encoding},请注意单个$)时,配置成功,该变量在加载配置文件时计算一次。 默认值对动态变量不起作用是预期行为吗? 详细信息:定义PatternLayout的RollingFile由多个记录器使用。每次加载一个记

  • 问题内容: 有什么方法可以根据html元素上的类设置颜色变量?还是通过其他方式实现这一目标? 问题答案: 这是基本主题。您可能想使用mixin或包含一个CSS文件中的多个主题。这是使用包括以下内容的方法: _theme.scss main.scss 您可以轻松地制作一个混合色,它使用3种颜色作为其参数来代替include:

  • 我正在从. jasper文件加载jasper报告文件以提高性能,如下所示。 但是我现在有一个要求,动态形成的查询必须设置为. jasper(编译)文件。有没有办法做同样的事情?

  • 我正在使用下载一些pdf格式的文档。我有几个子报告,它们的内容可能会根据数据的变化而变化,因此每个子报告的高度在运行时会发生变化。 我要求在每个子报告上设置一个边框后,很多谷歌,我发现backgroung band可以画边框。根据数据库中的数据显示边框,但边框的高度没有变化。 以下是我的背景波段: