2012-04-25 122 views
4

我在SSRS报告上有一个从存储过程中获取数据的tablix。SSRS在报告中没有数据

我试图向用户显示一个错误,当没有数据存在时说:“**这个报告没有数据* ”。我可以通过在Tablix的** NoRowsMessage属性中指定此消息轻松完成此操作。但我想显示Tablix的标题以及此消息。

如果我没有设置NoRowsMessage属性,我得到标题但没有消息,但是如果我这样做,我会得到消息但没有标题。

我需要一些帮助。

注:我使用SSRS 2008

编辑:

我也可以把一个文本框与相关文字信息的表矩阵的下方,设置仅在表矩阵中没有行,它是可见的。但我无法弄清楚如何从文本框的可见性表达中找出tablix是否包含任何行。

回答

5

tablix对象与底层数据集有关,因此如果没有数据,则输出中没有表。

除了使用NowRowsMessage属性以外,我唯一能想到的另一种方式是强制执行此操作,以确保查询在返回行时返回空值占位符。这种方式本质上是一个单一的数据行。

然后,您可以尝试在表上添加条件表达式(即在详细信息行的Visibility属性中),以防止包含占位符的任何行显示出来。

因此,在您的查询,你可以有:

IF (@@ROWCOUNT= 0) 
BEGIN 

SELECT 
'[IAMEMPTY]' as [Col1] 
,'[IAMEMPTY]' as [Col2] 
,'[IAMEMPTY]' as [Col3] 

END 

,然后在表的详细信息行的可见性属性:

=Iif(Fields!Col1.Value = "[IAMEMPTY]",True,False) 

编辑:另外,要检查如果DataSet是空的SSRS并显示一个包含您的消息/标题的矩形(如TooSik的评论中所述),则可以在可见性表达式中对此设置一个矩形:

=Iif(Rownumber("Dataset_Name")=0, False,True) 
+2

或者你可能有一堆Textfields按照一个包含你的标题的矩形分组......这个矩形应该有一个“可见性”规则,该规则仅在没有数据时显示该区域,当有数据时,正常的Tablix将显示,否则,其容器中的Textfields将显示(基本上是一个可见性切换)...只是一个想法! – ToOsIK 2012-04-25 16:08:00

+0

好吧,我正在考虑添加一个带有相关信息的文本框,并在tablix中没有行时显示可见性。但我没有理解如何从文本框的可见性表达式中检查Tablix中的行数。 。 :( – 2012-04-25 16:19:56

+0

你会检查数据集中的行数,而不是Tablix做到这一点。我已经添加了上面的语法。 – GShenanigan 2012-04-25 16:42:52