SSRS钻取报表参数未重置:点击部门后仍保留状态筛选如何解决?
解决SSRS钻取报表参数未重置的问题
问题原因
点击部门列跳转时,未明确传递@State参数,SSRS会默认保留会话中上次使用的@State值,导致报表2始终过滤该状态的数据,无法展示部门下全部状态的内容。
解决方案
1. 修改报表2的数据集查询,支持空参数过滤
将原查询修改为:当@State为空时,忽略该条件,返回部门下所有状态的数据:
SELECT * FROM [DASHBOARD].[dbo].[ENTERPRISE_LOGGING_SUMMARY] WHERE [DEPARTMENT] = @DEPARTMENT AND TYPE1 = @TYPE AND (@State IS NULL OR STATE = @State)
2. 修改部门列的跳转代码,强制重置参数
在跳转URL中添加&State=(传递空值)、rs:Command=Render(强制渲染)和rs:ClearSession=true(清除会话参数缓存):
="javascript:void window.open('" & Globals!ReportServerUrl & "/reportserver?" & Globals!ReportFolder & "/DrillDownReport&rs:Command=Render&TYPE="&Fields!TYPE1.Value & "&DEPARTMENT=" &Fields!DEPARTMENT.Value & "&State=&rs:ClearSession=true','_blank','width=1500,height=750,scrollbars=yes,resizable=yes,toolbar=no,status=no,menu=no,top=20,left=15')"
3. 配置报表2的@State参数属性
- 打开报表2的参数设置,找到
@State参数 - 勾选允许空值(Allow null value),确保报表能接受空参数
- 可选:将参数默认值设置为
NULL,进一步确保初始状态下展示全部数据
4. 优化状态列的跳转代码(可选)
原状态列代码存在重复的rs:Command=Render,修改为:
="javascript:void window.open('" & Globals!ReportServerUrl & "/reportserver?" & Globals!ReportFolder & "/DrillDownReport&rs:Command=Render&TYPE="&Fields!TYPE1.Value & "&DEPARTMENT=" &Fields!DEPARTMENT.Value & "&State=" & Fields!STATE.Value & "','_blank','width=1500,height=750,scrollbars=yes,resizable=yes,toolbar=no,status=no,menu=no,top=20,left=15')"
内容的提问来源于stack exchange,提问作者NewbeeLoveCoding
相关产品推荐
相关产品推荐

