JasperReports计数器变量总是递增

Sco*_*mos 7 variables counter report jasper-reports ireport

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

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

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

我忘了什么简单的小事?

Sco*_*mos 4

我想我已经明白了。这似乎没有任何意义,但是......(请注意,这是我第一次使用 Jasper 变量,所以这是反复试验)。

变量表达式并不完全是布尔值,如果表达式为 false,计数器类型变量不会递增,就像您想象的那样。如果表达式中计算了任何值,则变量会递增。因此,对我来说,最终的工作如下:

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

如果表达式应该为 false,请注意 null 的用法。

它的意义模糊而扭曲。但绝不是直观的。哦,好吧,就这么过去了……

或者换句话说:

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

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

这就是上面列出的测试有效的原因