这应该是关于 JasperReports 的一个简单问题。我试图在整个报告中做一个简单的计数器,它应该根据条件递增。但是,无论我尝试什么,无论变量表达式如何,似乎计数器变量总是递增。我的变量的定义属性如下:
班级: 整数
计算: 计数
重置类型: 报告
增量类型: 无
变量表达式: $F{on_target}.doubleValue() >= 0.0
初始值: Integer.valueOf(0)
我在数据集中总共有23行,根据标准,计数器最终应该等于18.我在摘要频段输出变量, < em>评估时间 到现在。但是,无论评估时间如何,甚至将 变量表达式 设置为 Boolean.valueOf(true == false)
,变量的值总是最终为23。
我忘了什么简单的小事?
答案 0 :(得分:4)
我想我已经明白了。这听起来很模糊,但是......(请注意,这是我第一次使用Jasper Variables,所以这是试验和错误)。
变量表达式不是一个布尔值,如果表达式为假,则计数器类型变量不会增加,就像你想的那样。如果在表达式中计算了任何值,则变量会递增。因此,对我来说,最终工作的是:
$F{on_target} >= 0 ? 1 : null
如果表达式应为false,请注意使用null。
它使模糊,扭曲的感觉。但绝不是直观的。哦,好吧,它就是......
或换句话说:
当您使用Jasper定义的变量的 Calculation:Count 函数时,您需要变量表达式:
这就是上面列出的测试工作的原因
答案 1 :(得分:2)
将变量表达式设置为:
$F{on_target} >= 0 ? 1 : null
尝试将变量的initialValueExpression设置为0。
答案 2 :(得分:1)
这对我有用:
$F{on_target} >= 0 ? 1 : BigDecimal.ZERO
无需初始变量值。