当 BIRT 报告中的表为空时显示“无数据”消息

Posted

技术标签:

【中文标题】当 BIRT 报告中的表为空时显示“无数据”消息【英文标题】:Display "No Data" message when table is empty in BIRT Report 【发布时间】:2014-10-15 01:26:15 【问题描述】:

如果查询没有返回数据,我想隐藏一个表并报告“无数据”消息。 在计算列中,我添加了计算存在行数的列(即TableCheck)。 我在表格下方创建了带有“无数据”消息的标签。在 onCreate 脚本中,我添加了以下代码。

if( countOfRows == 0 )
this.getStyle().fontStyle = "italic";
this.getStyle().fontSize = "large";
else
this.text = "";

countOfRows = 0 在脚本中初始化。

在表格可见性属性中,检查隐藏元素并在表达式中添加以下代码。

if (row["TableCheck"] == null)
    true

else
    false

问题:当dataSet为空时显示“No Data”消息。但是当dataset不为空时,则错误消息没有隐藏。

请告诉我如何解决这个问题。

提前致谢。

【问题讨论】:

相关Need to display a message when chart not having data in birt report 相关Hiding grids/tables in BIRT whith no results from datasource 【参考方案1】:

这样做: 当数据集没有返回任何行时,首先添加可视元素以显示它。

然后在报表根目录的初始化脚本中定义全局变量。 例如

rowsReturned = 0;

在您将评估数据集以查看的表上是否有行返回到下一个可见性选项卡集:

在没有返回数据时要显示的元素上设置此可见性选项卡

【讨论】:

非常感谢。这正是我所期待的。 可见性表达式不能包含尾随分号。 也许吧,但是这个截图是根据生产报告制作的;)【参考方案2】:

如果你想在没有返回数据的情况下隐藏表格,你可以在它的 Visibility 属性中这样写:

row.__rownum < 0

并在“无数据”消息的可见性属性中使用相反的检查:

row.__rownum >= 0

请注意,这两个组件都必须绑定到您要检查的数据集。对于消息组件,您可以将其放在页眉或页脚行中。

【讨论】:

【参考方案3】:

不使用全局变量的替代解决方案(虽然功能上不太一样,因为布局总是包含一个表格):

将带有表达式 1 的 COUNT 聚合的绑定 numRows 添加到表中。

设置为表头行的可见性表达式:

!row["numRows"]

在表格中添加一个新的页脚行;为此页脚行设置可见性表达式

row["numRows"]

合并此页脚行中的单元格,然后在表格单元格中放置一个标签“未找到数据”。

【讨论】:

BIRT 4.3 中有一个错误:表达式 1 上的 COUNT 聚合不起作用(对于 0 行返回 1!)。相反,选择任意 NOT NULL 列作为表达式。

以上是关于当 BIRT 报告中的表为空时显示“无数据”消息的主要内容,如果未能解决你的问题,请参考以下文章

如何在登录失败时显示错误消息?

Laravel API - 当状态字段为空时显示所有地区

Angular:ngFor数据项并在为空时显示自定义消息

如何监视 Azure SQL 中的表是不是为空?

当ListView为空时Android显示文本

当用户点击一个键时显示一条消息