如果子报表是隐藏的,子报表中的查询仍然执行

问题描述

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

谢谢

解决方法

据我所知,查询仍将运行。您可以在运行报告并捕获执行的查询时通过运行 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

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

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...