【问题标题】:How to cause parameter to default to "Null Value" in BIRT Report?如何在 BIRT 报告中使参数默认为“空值”?
【发布时间】:2015-12-01 22:20:30
【问题描述】:

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

【问题讨论】:

    标签: parameters null birt


    【解决方案1】:

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

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

    要找出参数行为不同的原因,请查看 XML 源代码,您可能会发现其中的不同之处。

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

    【讨论】:

      【解决方案2】:

      我有几份具有类似限制的报告。

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

      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 )
      

      【讨论】:

        猜你喜欢
        • 2014-05-14
        • 1970-01-01
        • 1970-01-01
        • 2015-10-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多