【问题标题】:SSRS Nested Report Not Coming Through if Dataset is Empty如果数据集为空,则无法通过 SSRS 嵌套报告
【发布时间】:2018-10-10 21:14:16
【问题描述】:

我正在使用具有嵌套子报表的预先存在的 SSRS 报表。

嵌套子报表并不总是返回数据。 (这是正确的)。如果数据集为空,则没有任何报告或列标题没有任何类型的值没有徽标。没有。然而,这不是我们想要的。如果数据集为空,则报告应返回标题/徽标和列标题,并带有一个表明该数据范围没有数据的字符串。

没有过滤器/可见性设置阻止它通过。请指教。

【问题讨论】:

    标签: sql-server reporting-services null ssrs-2008 subreport


    【解决方案1】:

    如果没有数据,您可以插入“虚拟”记录。假设您当前的查询是:

    SELECT ID
        , [Name]
        , [FavoriteFruit]
    FROM yourTable
    WHERE [SomeField] = 'hello'
    

    您可以检查值并返回一个虚拟记录,例如:

    IF EXISTS(
        SELECT 1
        FROM yourTable
        WHERE [SomeField] = 'hello'
        )
        SELECT ID
            , [Name]
            , [FavoriteFruit]
        FROM yourTable
        WHERE [SomeField] = 'hello'
    ELSE
        SELECT ID = 0
            , [Name] = 'No data'
    

    【讨论】:

    • 我无法控制数据,因此无法插入虚拟记录。但我喜欢检查是否有数据的想法。也就是说上面的语法是 SQL 而不是 ssrs 语法。我将在哪里/如何使用上述逻辑来测试 ssrs 中的记录
    • 它实际上并没有插入记录 - 我的措辞不好。这改变了报表的数据源查询以包含一个虚拟记录:它不必在数据库中,因为您只是指定要返回的值。您可以在报表的查询中包含 IF/THEN 逻辑。
    • 我还想到你可以包含一个完整的虚拟 tablix 控件。使用查询“SELECT ID = 1”创建一个新数据源。该查询将始终返回“1”作为 [ID] 的值,因此报告应始终正常生成。只需确保将虚拟 tablix 变小并将字体设置为 while,这样用户就不会看到它。
    • 知道了。会试试这个。谢谢。 (我的问题仍然是为什么数据没有通过/可见),虽然这个选项会测试我是否可以使用它。我不明白为什么嵌套时列标题没有通过。
    【解决方案2】:

    检查Row Exists

        IF NOT EXISTS(SELECT 1 FROM table)
         BEGIN
              SELECT Column from table
         END        
      ELSE
         BEGIN
              SELECT 'No records' as Column from table
         END
    

    从 SSRS 报告中为您的结果表添加条件

    Tablix Properties > Visibility > Show or Hide Based on Condition

    添加带有文本'No records found'TextBox 并添加一个条件以根据您的数据集结果显示。

    【讨论】:

    • 只是为了确保这是 SQL 而不是 SSRS 语法?这也将显示标题/等。我仍然无法让那些显示。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-29
    • 2015-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多