小编use*_*142的帖子

碧玉报表中的动态查询

我们正在使用jaspersoft studio创建报告,而我被困在查询部分。从逻辑上讲,我想要的查询类型是:

select * from mytable where
                    IF (condition1)
                              raw_sql_part_1
                    ELSE
                              raw_sql_part_2
Run Code Online (Sandbox Code Playgroud)

因此,现在为了在“查询编辑器对话框”中实现此目的,我写道:

select * from mytable where $P!{param1}
Run Code Online (Sandbox Code Playgroud)

并在表达式编辑器中将“ param1”默认值添加为:

"$P{param2}.equals("A") ?  "1 <> 1" :"1=1" , is 'For prompting' as false
Run Code Online (Sandbox Code Playgroud)

还在参数列表中添加了“ param2”,“为提示”为true

我期望这样: 当我点击预览时,它将提示我输入param2值,然后基于param2解析param1中的条件,然后最终将其替换为实际查询中的条件。param2的默认值为空字符串。

实际发生的情况: 当我点击预览时,它会问我期望的param2的值,但是param2的值不用于解析param1中定义的条件,因为param1条件始终解析为其他部分,即“ 1 == 1”,并且主要查询也变成了

select * from mytable where 1==1
Run Code Online (Sandbox Code Playgroud)

Q1:我期望错了吗?

Q2:为什么不使用param2来解析param1中定义的条件?

我们正在使用Jaspersoft Studio 6.1.1版本

jasper-reports

5
推荐指数
1
解决办法
3444
查看次数

标签 统计

jasper-reports ×1