JasperReports计数器变量总是递增

时间:2011-08-18 21:32:46

标签: variables jasper-reports report ireport counter

这应该是关于 JasperReports 的一个简单问题。我试图在整个报告中做一个简单的计数器,它应该根据条件递增。但是,无论我尝试什么,无论变量表达式如何,似乎计数器变量总是递增。我的变量的定义属性如下:

班级 整数
计算 计数
重置类型 报告
增量类型
变量表达式 $F{on_target}.doubleValue() >= 0.0
初始值 Integer.valueOf(0)

我在数据集中总共有23行,根据标准,计数器最终应该等于18.我在摘要频段输出变量, < em>评估时间 现在。但是,无论评估时间如何,甚至将 变量表达式 设置为 Boolean.valueOf(true == false) ,变量的值总是最终为23。

我忘了什么简单的小事?

3 个答案:

答案 0 :(得分:4)

我想我已经明白了。这听起来很模糊,但是......(请注意,这是我第一次使用Jasper Variables,所以这是试验和错误)。

变量表达式不是一个布尔值,如果表达式为假,则计数器类型变量不会增加,就像你想的那样。如果在表达式中计算了任何值,则变量会递增。因此,对我来说,最终工作的是:

$F{on_target} >= 0 ? 1 : null

如果表达式应为false,请注意使用null。

它使模糊,扭曲的感觉。但绝不是直观的。哦,好吧,它就是......

或换句话说:

当您使用Jasper定义的变量的 Calculation:Count 函数时,您需要变量表达式

  • 非空 值解析为 增量 计数器
  • 如果 不想增加
  • ,则解析为 null

这就是上面列出的测试工作的原因

答案 1 :(得分:2)

将变量表达式设置为:

$F{on_target} >= 0 ? 1 : null

尝试将变量的initialValueExpression设置为0。

答案 2 :(得分:1)

这对我有用:

$F{on_target} >= 0 ? 1 : BigDecimal.ZERO

无需初始变量值。