Jaspersof iReport-当参数为null时,如何返回所有记录

时间:2017-01-20 02:14:10

标签: sql postgresql jasper-reports

我有三个参数$P{Clss}(从船只中选择班级),$P{MinWeight}$P{MaxWeight}。每当我将$P{Clss}留空时,它始终不显示任何页面。

我的WHERE子句怎么了?我试过这个。

where  first.class = $P{Clss} or $P{Clss} is null and displacement between $P{MinWeight} and $P{MaxWeight}


where $P{Clss} is null or $P{Clss} = first.class and displacement between $P{MinWeight} and $P{MaxWeight}

我阅读了与此相关的博客和问题,但不知怎的,它总是显示没有页面,或者我想我在这里真的只是一个菜鸟。

2 个答案:

答案 0 :(得分:0)

在Jasper报告中,您需要以不同方式处理此案例,如下所示

  • 创建一个名为ClassParsed的新参数(仅命名约定)。
  • 在参数表达式中,提供为$P{Clss} != null && !$P{Clss}.isEmpty() ? " first.class = '"+$P{Clss}+"'" : "true"
  • 然后在您的查询中有类似下面的内容

where $P!{ClassParsed} and displacement between $P{MinWeight} and $P{MaxWeight}

如果您没有为参数$ P {Clss}赋值,那么参数ClassParsed将如下所示,

where true and displacement between $P{MinWeight} and $P{MaxWeight}

如果您将参数$ P {Clss}的值设为Class1,则参数ClassParsed将如下所示

where first.class = 'Class1' and displacement between $P{MinWeight} and $P{MaxWeight}

希望这会帮助你。

答案 1 :(得分:0)

兄弟,在定义jasper参数时必须使用括号,即<; p>
where  first.class = ($P{Clss} or $P{Clss} is null) and displacement between $P{MinWeight} and $P{MaxWeight}

我使用这些参数来获取用户位置

select * from location where
a.state = $P{state} and
 (a.district = $P{district} or $P{district} is null) 

如果任何一个分区参数为空,那么报告也会生成。

PS:干杯!!