有没有办法在iReport中有条件地添加参数?
在我的一个报告中,我想根据其值传递参数。以下是报告查询:
从学生中选择姓名,设计,班级 class = $ P {calss} AND joinYear = $ P {joinYear}
我想仅在传递joinYear时添加joinYear条件,如果joinYear的值为空,则只应用一个条件。
有没有办法在iReport中查看报告查询中的条件?
答案 0 :(得分:2)
你可以试试这个: -
SELECT name,
desi,
class
FROM student
WHERE (class=$P{calss} or $P{calss} is null )
AND (joinYear=$P{joinYear} or $P{joinYear} is null)
在这种情况下,您只传递参数值的任何参数都将在查询中传递。
答案 1 :(得分:1)
您可以尝试使用子报表。创建一个虚拟主报表,它将报表作为子报表,使用虚拟查询(如
)select 1 as dummy
并添加变量ie。 $V{joinYearCond}
带表达式
($P{joinYear} == "" || $P{joinYear} == null) ? "" : "and joinYear = " + $P{joinYear}
同时修改报表中的查询(现在是子报表)
select name,desi,class from student where class=$P{calss} $P!{joinYearCond}
对于参数$P{joinYearCond}
,传递$V{joinYearCond}
的值。它看起来不漂亮,但它会起作用。
答案 2 :(得分:0)
创建一个新参数joinYear_query并设置为DEFAULT VALUE EXPRESSION
$P{joinYear}==null ? " true": " joinYear=".concat($P{joinYear}.toString())
然后
select name,desi,class from student where class=$!P{calss} AND $P!{joinYear_query}
您可以在以下位置查看更多详情: Accepting null values as parameters in jasper report