Jasper reports 如何在iReport中有条件地传递参数?

Jasper reports 如何在iReport中有条件地传递参数?,jasper-reports,ireport,Jasper Reports,Ireport,有没有办法在iReport中有条件地添加参数 在我的一个报告中,我希望根据其值传递参数。以下是报表查询: 从学生中选择姓名、设计、班级 其中class=$P{calss} 和joinYear=$P{joinYear} 我只想在通过joinYear时添加joinYear条件,若joinYear的值为空,则只应应用一个条件 有没有办法在iReport中检查报表查询中的条件?您可以尝试以下方法:- SELECT name, desi, c

有没有办法在iReport中有条件地添加参数

在我的一个报告中,我希望根据其值传递参数。以下是报表查询:

从学生中选择姓名、设计、班级 其中class=$P{calss} 和joinYear=$P{joinYear}

我只想在通过joinYear时添加joinYear条件,若joinYear的值为空,则只应应用一个条件

有没有办法在iReport中检查报表查询中的条件?

您可以尝试以下方法:-

      SELECT name,
             desi,
             class 
      FROM student 
      WHERE (class=$P{calss} or $P{calss} is null ) 
             AND (joinYear=$P{joinYear} or $P{joinYear} is null)

在这种情况下,您将传递的任何参数都只会在查询中传递该参数值。

您可以尝试使用子报表。创建一个伪主报表,它将以子报表的形式调用您的报表,并使用一个伪查询,如

select 1 as dummy
并使用表达式添加变量ie.
$V{joinYearCond}

($P{joinYear} == "" || $P{joinYear} == null) ? "" : "and joinYear = " + $P{joinYear}
还要修改报表(现在是子报表)中的查询


对于参数
$p{joinYearCond}
传递
$V{joinYearCond}
的值。它看起来不漂亮,但可以工作。

创建一个新的参数joinYear\u查询并设置为默认值EXPRESSION

 $P{joinYear}==null  ? " true": " joinYear=".concat($P{joinYear}.toString())
然后

您可以在中查看更多详细信息:

可能重复的&&&
 $P{joinYear}==null  ? " true": " joinYear=".concat($P{joinYear}.toString())
select name,desi,class from student where class=$!P{calss} AND $P!{joinYear_query}