我有一份包含多个子报告的SSRS报告。用户可以使用几个布尔参数来选择/取消选择他们想要生成哪些子报告。如果取消选择子报表,则不会通过设置Visibility属性来呈现它。但是,与取消选择的子报告关联的DataSet仍会执行,导致执行时间比预期的要长。
有没有办法告诉子报告或Tablix上的数据集不能根据参数选择执行?
答案 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个查询中使用多个语句