【问题标题】:SSRS no data in reportSSRS 报告中没有数据
【发布时间】:2012-04-26 16:15:36
【问题描述】:

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

我正在尝试在没有数据时向用户显示消息,例如“**此报告没有数据*”。我可以通过在 tablix 的 **NoRowsMessage 属性中指定此消息来轻松完成此操作。但我想连同这条消息一起显示 tablix 的标题。

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

我需要一些帮助。

注意:我使用的是 SSRS 2008。

编辑:

我还可以在 tablix 下方放置一个带有相关文本消息的文本框,并将其设置为仅当 tablix 不包含行时才可见。但是我无法弄清楚如何从文本框的可见性表达式中找出 tablix 是否包含任何行。

【问题讨论】:

    标签: ssrs-2008


    【解决方案1】:

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

    除了使用 NowRowsMessage 属性之外,我能想到的唯一其他方法是确保您的查询在现在返回行时返回一个空值占位符。这样,您实际上将拥有一个数据行。

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

    所以在您的查询中,您可以:

    IF (@@ROWCOUNT= 0)
    BEGIN
    
    SELECT 
    '[IAMEMPTY]' as [Col1]
    ,'[IAMEMPTY]' as [Col2]
    ,'[IAMEMPTY]' as [Col3]
    
    END
    

    然后在表格详细信息行的 Visibility 属性中:

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

    编辑:或者,要检查 SSRS 中的 DataSet 是否为空并显示包含您的消息/标题的矩形(如 TooSik 的评论中所述),您可以在 Visibility 表达式中设置一个矩形:

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

    【讨论】:

    • 或者你可能有一堆文本字段由一个包含标题的矩形分组......这个矩形应该有一个“可见性”规则,仅在没有数据时显示该区域,当有是数据,正常的 Tablix 将显示,否则,其容器中的文本字段将显示(基本上是可见性切换)......只是一个想法!
    • 好吧,我正在考虑添加一个带有相关消息的文本框,并在 tablix 中没有行时切换可见性。但是我不明白如何从文本框的可见性表达式中检查 tablix 中的行数。 . :(
    • 您将检查 DataSet 中的行数,而不是 Tablix 来执行此操作。我已经添加了上面的语法。
    • 好吧,那行得通。感谢 GS,但我必须做一个小改动,在最后一个表达式中交换 True 和 False。我也编辑过。
    • 啊,当然!从上面的语句中复制了我的 Iif 并忘记了切换它们。已批准您的修改,谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多