如何强制 BIRT 显示零值?
Posted
技术标签:
【中文标题】如何强制 BIRT 显示零值?【英文标题】:How do I force BIRT to display zero values? 【发布时间】:2010-03-03 08:23:03 【问题描述】:我有一个 BIRT 报告的情况。我创建的报告坚持将某些字段显示为空白而不是零。当字段实际上是一个不返回任何行的子选择时,就会出现这种情况。
例如,如果选择包括:
0 as p3,
然后 0 显示正常。但是,如果选择具有:
(select sum(other_field) from other_table where ...) as p3,
该字段显示为空白。
修改数据以便为子选择存在行会导致显示一个值,即使它们的结果值为零。
所以我认为 BIRT 以某种方式将返回零行的子选择视为 NULL(它也显示为空单元格)而不是零。有谁知道如何强制 BIRT 显示实际的 0 而不是空单元格?
如果有人需要发布特定于 DBMS 的答案,我将使用 DB2/z v8,尽管即使是基于其他供应商的建议也将不胜感激。
【问题讨论】:
【参考方案1】:当列或表达式可能返回 NULL 时,尝试使用 COALESCE 函数强制一个值。
COALESCE((select sum(other_field) from other_table where ...), 0) as p3,【讨论】:
【参考方案2】:另一种方法,虽然不那么优雅但有时是必要的(例如,如果您正在执行一个 您 无法更改的存储过程),那就是使用 javascript 在运行时强制显示“0”时间。
使用以下表达式进行数据绑定:
if (dataSetRow["your_data_set"] == null)
0
else
dataSetRow["your_data_set"]
根据数据类型,您可能需要将引号添加到零
"0"
表示字符串,不带引号将其视为整数。
【讨论】:
【参考方案3】:在使用十进制数据时,我能够对字段进行快速 +0 作为缩短版本。
dataSetRow["your_data_set"]+0
【讨论】:
以上是关于如何强制 BIRT 显示零值?的主要内容,如果未能解决你的问题,请参考以下文章