0

我有一种情况,我想在 tablix 中动态显示/隐藏子报告。理想情况下,隐藏子报告中的内容不会执行以节省资源。有人知道这是如何工作的吗?

谢谢

4

1 回答 1

0

据我所知,查询仍将运行。您可以在运行报告并捕获执行的查询时通过运行 SQL Server Profiler 进行仔细检查。

早在 SQL 2008 中,查询肯定会运行。我们有一种情况,我们只希望根据传递给报表的参数显示子报表,所以我们所做的就是将参数传递给子报表并使用这些参数来确定查询是否应该运行。

如果查询不需要运行,我们将返回一个空数据集,但是,由于 SSRS 坚持始终返回相同的结构,查询最终看起来像这样......

DECLARE @results TABLE(EmplID int, EmpName varchar(50))
IF @hidden = 0 -- sub report needs to show
    BEGIN
        INSERT INTO @results
        SELECT EmpID, EmpName FROM myTable
    END
SELECT * FROM @results

因此,尽管查询运行,但如果不需要数据,所有发生的事情都是创建一个表变量,它是如此之快,你不会注意到。

于 2021-04-01T15:44:51.417 回答