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

Parameters 如何使参数默认为";空值";在BIRT报告中?,parameters,null,birt,Parameters,Null,Birt,在BIRT报告中,有两个字符串文本框参数在“编辑参数”页面上看起来相同,在“默认值”框中都为空。但是,当我选择运行报告时,一个默认为“Null值”,而另一个默认为空字符串。如何配置使用的默认设置?数据集不使用这两个参数,因为它们只是文本 处理空参数是BIRT的弱点之一。 例如,不允许仅将dataset参数的默认值保持为空。 如果在运行时实际将null传递给数据集,BIRT会抛出大量无用的堆栈跟踪,告诉您这是不受支持的。。。 在Oracle方面,NULL和空字符串是等效的,因此我通常使用“”作为默

在BIRT报告中,有两个字符串文本框参数在“编辑参数”页面上看起来相同,在“默认值”框中都为空。但是,当我选择运行报告时,一个默认为“Null值”,而另一个默认为空字符串。如何配置使用的默认设置?数据集不使用这两个参数,因为它们只是文本


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

function nvl_mt(x) {
  if (x==null) {
    return "";
  }
  return x;
}
为了找出参数行为不同的原因,请查看XML源代码,您可能会发现其中的差异


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

我有几个具有类似约束的报表

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

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

您可以在SQL中使用like语句,并将%作为默认值

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

但是

通配符搜索中不显示Null。因此,如果数据中确实存在Null,则可能需要SQL isnull()或sub is Null查询

and ( UPMC_METADATA_DOMAIN like ?
or UPMC_METADATA_DOMAIN is null )