如何为Ireport中的多选参数的空值赋值?

时间:2012-03-20 06:11:38

标签: null jasper-reports ireport jasperserver

我正在使用iReport开发报告,我想在其中添加空值的条件。它使用单选项作为:

(city=$P{p_city} or $P{p_city} is null)

这意味着如果我们不传递city参数的任何值,报告将起作用,但是在多选项选项的情况下这不起作用。我们在创建参数时必须在iReport中选择“Collection”值表达式:

($X{IN, country,p_country} or $P{p_country} is null) 

我在JasperReports Server中创建了两个输入控件来运行此报告。一个是单选,“选择城市”,另一个是多选,“选择国家”,报告正在运行而没有传递“选择城市”参数的值,但对于“选择国家”参数,我们必须传递该值,因为“选择国家/地区”是多选项和集合类型参数,并且您不能在查询中添加空条件作为城市参数。

我们如何修改JRXML查询?

3 个答案:

答案 0 :(得分:4)

$ X功能会自动处理。在您的情况下,您在查询中有这个:

$X{IN, country, p_country}

如果您的Collection为null,则会转换为1 = 1。因此,没有理由将$P{p_country} is null添加到查询中。

答案 1 :(得分:1)

当Collection参数的值为NULL时,隐藏所有数据输出都是通过以下方式完成的 表格组件上的表达式时打印。

P{Collection_Parameter_Name}.size()>0

注释:

  1. Collection参数在SQL查询中采用语法$X{IN,filed_Name,param_Name},但在这里我们必须接受它 如$P{Collection_parameter_Name}
  2. 如果您在报告上打印参数,您将获得不同大小的收集参数(收集下拉列表中所选值的数量)

答案 2 :(得分:0)

你可以像这样设置你的条件  城市IN($ P!{p_city})

然后你可以通过网址调用:

http://ip:8080/jasperserver/flow.html?_flowId=viewReportFlow&standAlone=true&_flowId=viewReportFlow&ParentFolderUri=/reports/reports&reportUnit=/reports/reports/rptReporte&j_username=jasperreportadmin&j_password=jasperreportadmin&p_city='city1','city2'