SSRS有条件地运行SQL / DataSet

时间:2010-06-17 16:36:58

标签: reporting-services upload dataset conditional

我有一份包含多个子报告的SSRS报告。用户可以使用几个布尔参数来选择/取消选择他们想要生成哪些子报告。如果取消选择子报表,则不会通过设置Visibility属性来呈现它。但是,与取消选择的子报告关联的DataSet仍会执行,导致执行时间比预期的要长。

有没有办法告诉子报告或Tablix上的数据集不能根据参数选择执行?

3 个答案:

答案 0 :(得分:8)

在where子句中包含AND :ParameterName = 'Y'条件 - 如果您的参数不是'Y',查询仍会触发,但会立即返回0条记录。

答案 1 :(得分:3)

是。只需检查每个数据集中的参数,并使用IF / ELSE结构返回相同形状的实际数据或虚拟数据,以防止出错。假设您的参数名为@ShowThisData,那么您可以这样做:

IF @ShowThisData = 0
    SELECT '' FIELD1, '' FIELD2, <etc... to create a dataset that matches the normal output.>
ELSE
    <whatever you normally do to get the data>

答案 2 :(得分:1)

当我在Oracle中尝试它时,这是有效的

select
case when :ShowThisData = 0
        then    (SELECT 'Y' 
                    from dual)
    ELSE    (select 'N'
              from dual)
end test1
from dual

允许您在1个查询中使用多个语句