SSRS文本框属性-操作-跳转到报表:如何匹配矩阵表格特征
解决SSRS矩阵表跳转报表的参数匹配问题
别担心,刚接触SSRS矩阵的跳转配置确实容易摸不着头绪,我结合你的场景一步步给你说明怎么操作:
核心思路
你的矩阵是行按格式化后的月份分组、列按Country字段分组,所以跳转时需要把当前单元格对应的「月份分组值」和「Country值」准确传递给目标报表,确保目标报表能筛选出对应的数据。
步骤1:确认目标报表的参数
首先要保证你要跳转的目标报表已经定义好接收参数:
- 建议至少配置两个参数:
- 一个用于接收月份筛选条件:可以是字符串类型(比如
@TargetMonth,格式为yyyy-MMM);或者更准确的日期类型参数@StartDate和@EndDate,对应月份的起止日期 - 另一个用于接收国家筛选条件:比如
@TargetCountry(字符串类型)
- 一个用于接收月份筛选条件:可以是字符串类型(比如
步骤2:配置矩阵数据单元格的跳转
这里以矩阵中显示数字的单元格(比如你例子里的0、3、9)为例:
- 右键点击这个数据单元格 → 选择文本框属性
- 切换到操作标签页 → 勾选「跳转到报表」,然后从下拉列表选择你要跳转的目标报表
- 在「参数」区域配置参数映射:
- 匹配Country参数:
- 目标参数选你定义的
@TargetCountry - 参数值直接选择
Fields!Country.Value(因为这个单元格属于Country列组,能直接获取当前列的国家值)
- 目标参数选你定义的
- 匹配月份分组参数:
- 如果目标报表用的是
yyyy-MMM格式的字符串参数(比如@TargetMonth):
参数值填写和你行组一致的表达式:=Format(CDATE(Fields!Involved_From_Date.Value), "yyyy-MMM") - 如果目标报表用的是日期范围(更推荐,避免字符串格式问题):
- 对于
@StartDate(当月第一天):参数值填=DateSerial(Year(CDATE(Fields!Involved_From_Date.Value)), Month(CDATE(Fields!Involved_From_Date.Value)), 1) - 对于
@EndDate(当月最后一天):参数值填=DateAdd(DateInterval.Day, -1, DateAdd(DateInterval.Month, 1, DateSerial(Year(CDATE(Fields!Involved_From_Date.Value)), Month(CDATE(Fields!Involved_From_Date.Value)), 1)))
- 对于
- 如果目标报表用的是
- 匹配Country参数:
额外场景:行/列标题的跳转配置
如果你想让行标题(比如2018-Jan)或列标题(比如Australia)也能跳转:
- 行标题跳转:右键点击行组标题文本框,同样进入操作标签。此时Country参数可以留空(如果目标报表允许空值筛选所有国家),月份参数按上面的方式传递即可。
- 列标题跳转:右键点击列组标题文本框,月份参数留空或设默认值,Country参数传递
=Fields!Country.Value。
注意事项
- 目标报表的参数名称要和你映射的完全一致,SSRS对参数名大小写敏感;
- 如果行组是通过分组设置生成的,也可以直接用
=Group!你的行组名称.Value来获取分组值(比如行组命名为MonthGroup,就写=Group!MonthGroup.Value),比重复写Format表达式更简洁; - 日期类型的参数一定要传递日期值,别把字符串类型的月份传到日期参数里,会导致报错。
内容的提问来源于stack exchange,提问作者Heislegend31
相关产品推荐
相关产品推荐

