如何在 "Print when Expression" 从文本字段返回 true 后设置变量值
How to set variable value after "Print when Expression" from textfield returned true
使用 iReport 我有一个包含以下内容的文本字段 "Print When Expression":
new Boolean($F{data}.doubleValue()<3 && $V{check}.intValue()==0);
我的问题是我只想打印一次这个文本字段。为此,我想我可以使用一个变量 (check
).
我尝试将此表达式用于变量:
($F{data}.doubleValue()<3) ? 1 : 0
问题是在文本字段检查其 "print condition" 之前调用变量的表达式,因此永远不会打印文本字段。
如何实现在文本字段 "print condition" 返回 true 后设置变量值?
I want to mark the first value which is smaller than a reference value
我找到了解决方法,但我觉得这不是一个很好的方法,因为我的解决方案与文本字段和变量的条件评估时间有关。
所以如果有人有好的解决方案请post它。
我将 check
变量的初始值设置为 0
。
变量表达式如下所示:
($F{data}.doubleValue() >= 3)? 0 : ($F{data}.doubleValue() < 3 && $V{check}.intValue()==0) ? 2 : 1;
文本字段中的 "Print When Expression" 是:
new Boolean($V{check}.intValue()==2);
我经常使用参数映射 (P{REPORT_PARAMETERS_MAP}
) 根据先前的值和输出来存储和评估自定义表达式
示例(return true
如果值 $F{X}<100
并且之前从未低于过)
<printWhenExpression>
<![CDATA[$F{X}.doubleValue()<100?$P{REPORT_PARAMETERS_MAP}.put("X_LESS_100",true)==null?true:false:false]]>
</printWhenExpression>
此表达式利用了以下事实:Map.put(K,V) return 是与键关联的前一个值,即如果从未调用过,则为 null
,而第二次 $F{X}
低于100 它将 return 我们之前的设置值 true
。
Note: you do not need to define any variable.
使用 iReport 我有一个包含以下内容的文本字段 "Print When Expression":
new Boolean($F{data}.doubleValue()<3 && $V{check}.intValue()==0);
我的问题是我只想打印一次这个文本字段。为此,我想我可以使用一个变量 (check
).
我尝试将此表达式用于变量:
($F{data}.doubleValue()<3) ? 1 : 0
问题是在文本字段检查其 "print condition" 之前调用变量的表达式,因此永远不会打印文本字段。
如何实现在文本字段 "print condition" 返回 true 后设置变量值?
I want to mark the first value which is smaller than a reference value
我找到了解决方法,但我觉得这不是一个很好的方法,因为我的解决方案与文本字段和变量的条件评估时间有关。
所以如果有人有好的解决方案请post它。
我将 check
变量的初始值设置为 0
。
变量表达式如下所示:
($F{data}.doubleValue() >= 3)? 0 : ($F{data}.doubleValue() < 3 && $V{check}.intValue()==0) ? 2 : 1;
文本字段中的 "Print When Expression" 是:
new Boolean($V{check}.intValue()==2);
我经常使用参数映射 (P{REPORT_PARAMETERS_MAP}
) 根据先前的值和输出来存储和评估自定义表达式
示例(return true
如果值 $F{X}<100
并且之前从未低于过)
<printWhenExpression>
<![CDATA[$F{X}.doubleValue()<100?$P{REPORT_PARAMETERS_MAP}.put("X_LESS_100",true)==null?true:false:false]]>
</printWhenExpression>
此表达式利用了以下事实:Map.put(K,V) return 是与键关联的前一个值,即如果从未调用过,则为 null
,而第二次 $F{X}
低于100 它将 return 我们之前的设置值 true
。
Note: you do not need to define any variable.