在BIRT报告中,有两个字符串文本框参数在"编辑参数"页面,并且在"默认值"中都是空的。框。但是,当我选择运行报告时,会默认"空值"选择而另一个默认为空字符串。如何配置使用哪个默认值?数据集都不使用这两个参数,因为它们只是文本。
答案 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' = ?
Alliteratively你可以在SQL中使用like语句,将%作为默认值。
where UPMCNOTIFICATIONCONTACTSM1.UPMC_ADDRESS like ?
and UPMCNOTIFICATIONCONTACTSM1.UPMC_FULL_NAME like ?
<强> BUT 强>
Null不会在外卡搜索中显示。因此,如果您的数据中确实有Null,则可能需要SQL isnull()或sub为null查询
and ( UPMC_METADATA_DOMAIN like ?
or UPMC_METADATA_DOMAIN is null )