我们正在使用jaspersoft studio创建报告,而我被困在查询部分。从逻辑上讲,我想要的查询类型是:
select * from mytable where IF (condition1) raw_sql_part_1 ELSE raw_sql_part_2
因此,现在为了在“查询编辑器对话框”中实现此目的,我写道:
select * from mytable where $P!{param1}
并在表达式编辑器中将“ param1”默认值添加为:
"$P{param2}.equals("A") ? "1 <> 1" :"1=1" , is 'For prompting' as false
还在参数列表中添加了“ param2”,“为提示”为true
我期望这样: 当我点击预览时,它将提示我输入param2值,然后基于param2解析param1中的条件,然后最终将其替换为实际查询中的条件。param2的默认值为空字符串。
实际发生的情况: 当我点击预览时,它会问我期望的param2的值,但是param2的值不用于解析param1中定义的条件,因为param1条件始终解析为其他部分,即“ 1 == 1”,并且主要查询也变成了
select * from mytable where 1==1
Q1:我期望错了吗?
Q2:为什么不使用param2来解析param1中定义的条件?
我们正在使用Jaspersoft Studio 6.1.1版本