如何使参数默认为"空值"在BIRT报告?

时间:2015-12-01 22:20:30

标签: parameters null birt

在BIRT报告中,有两个字符串文本框参数在"编辑参数"页面,并且在"默认值"中都是空的。框。但是,当我选择运行报告时,会默认"空值"选择而另一个默认为空字符串。如何配置使用哪个默认值?数据集都不使用这两个参数,因为它们只是文本。

String parameters

2 个答案:

答案 0 :(得分:0)

处理空参数是BIRT的弱点之一。 例如,不允许将数据集参数的默认值保持为空。 如果在运行时实际上将null传递给数据集,BIRT会发出巨大的无用堆栈跟踪,告诉它不支持... 在Oracle方面,NULL和空字符串是等价的,所以我通常使用“”作为默认值,并确保使用这个小助手将从上下文传递的null转换为“”:

function nvl_mt(x) {
  if (x==null) {
    return "";
  }
  return x;
}

要找出参数表现不同的原因,请查看XML源代码,可能您会发现其中的差异。

另请注意,对于每个报表参数,BIRT都有一个存储在.rptdesign中的默认值,另一个默认值存储在相应的.rptconfig文件中,该文件仅在启动报表时使用IDE。

答案 1 :(得分:0)

我有几个类似限制的报告。

一种解决方案是使用" All"作为默认值,如果SQL这样的位。它返回输入的单个值或所有内容(' All'不是CONTCTSM1.OPERATOR_ID中的有效值,因此它将始终为空返回。

where CONTCTSM1.OPERATOR_ID = ?
or
'All' = ?

All

Alliteratively你可以在SQL中使用like语句,将%作为默认值。

where UPMCNOTIFICATIONCONTACTSM1.UPMC_ADDRESS like ?
and UPMCNOTIFICATIONCONTACTSM1.UPMC_FULL_NAME like ?

enter image description here

<强> BUT

Null不会在外卡搜索中显示。因此,如果您的数据中确实有Null,则可能需要SQL isnull()或sub为null查询

and ( UPMC_METADATA_DOMAIN like ?
or UPMC_METADATA_DOMAIN is null )