2011-03-17 99 views
1

iReport(4.0.1)中包含各种字段的报告包括:$F{value}(Integer)和$F{created_at}条件总和(变量)

我想计算的变量,将给予:

  1. $F{value}之时$F{created_at}是一个给定的日期
  2. $F{value}之时,之前是$F{created_at}给定日期

任何想法如何做到这一点?

回答

5

你将不得不使用两个不同的变量来做到这一点。对于你的变量,在'变量表达式'中使用类似的东西。 Date类也有一个after()函数。如果表达式的计算结果为真,$ F {value}将被添加,否则将会添加0。

$ F {created_at} .before($ P {givenDate})? $ F {value}:0

要使用变量求和,您需要将计算类型更改为“Sum”。默认的重置类型,报表将在整个报表中对值进行求和。其他重置类型在报告的不同部分(列,页面或组)上以相同方式工作。

下面是案 “之前的” XML:

<variable name="sumValueCreatedBefore" class="java.lang.Integer" calculation="Sum"> <variableExpression><![CDATA[F{created_at}.before($P{givenDate}) ? $F{value} : 0]]></variableExpression> </variable>

+0

将计算类型设置为“总和”的窍门。 – LapinLove404 2011-03-18 08:36:00

0

存在对另一种解决方案:编写子查询中选择statment

选择 (从表名称中选择总和(字段名称)作为余额

from tablename 其中条件