显示"无数据" BIRT报告中表格为空时的消息

时间:2014-08-21 12:02:33

标签: birt

我想要隐藏一张桌子并报告" No Data"如果查询未返回任何数据,则显示消息。 在计算列中,我添加了计数存在的行数的列(即表检查)。 我在表格下面创建了标签,上面写着#34; No Data"。在脚本onCreate中,我添加了以下代码。

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

countOfRows = 0在脚本中初始化。

在表visibilty属性中,选中了Hide Element并在表达式中添加了以下代码。

if (row["TableCheck"] == null){
    true
}
else{
    false
}

问题:当dataSet为空时#34;无数据"消息正在显示。但是当数据集不为空时,则不会隐藏错误消息。

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

先谢谢。

3 个答案:

答案 0 :(得分:8)

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

然后在报告根的Initialize脚本中定义全局变量。 例如

rowsReturned = 0;

在您的桌面上,您将评估数据集以查看下一个“可见性”选项卡上是否返回了行:

enter image description here

在“可见性”选项卡

上显示没有返回数据时要显示的元素

enter image description here

答案 1 :(得分:2)

如果要在没有返回数据时隐藏表,可以在其Visibility属性中写入:

row.__rownum < 0

并且在您的&#34;无数据&#34;的可见性属性中消息你使用相反的检查:

row.__rownum >= 0

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

答案 2 :(得分:1)

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

为COUNT聚合添加一个绑定numRows,表达式为1。

在表标题行中设置为可见性表达式:

!row["numRows"]

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

row["numRows"]

合并此页脚行中的单元格,然后放置标签&#34;找不到数据&#34;进入表格单元格。