SSRS报表代码生成的Rank:查看器Tablix间重置,导出后不重置
SSRS矩阵Tablix导出后Rank不重置的解决方法
问题根源
自定义代码里用于计算Rank的全局变量,在报表导出时会维持全局状态,不会随Tablix切换自动重置;但Visual Studio设计视图会按Tablix的渲染周期重置变量,这就导致了预览和导出后的结果不一致。
解决步骤
- 修改报表自定义代码
在原有Rank计算代码基础上,新增变量重置方法:
Dim previousValue As Object Dim currentRank As Integer Dim tieCount As Integer Public Sub ResetRank() previousValue = Nothing currentRank = 0 tieCount = 0 End Sub Public Function GetRank(ByVal currentValue As Object) As Integer If currentValue Is Nothing Then Return Nothing End If If previousValue Is Nothing Then currentRank = 1 tieCount = 1 ElseIf currentValue = previousValue Then tieCount = tieCount + 1 Else currentRank = currentRank + tieCount tieCount = 1 End If previousValue = currentValue Return currentRank End Function
- 为每个Tablix绑定重置事件
- 选中需要独立计算Rank的Tablix,按
F4打开属性窗口 - 点击属性窗口右上角的闪电图标(切换到事件视图)
- 在
BeforeRender事件中输入Code.ResetRank() - 对所有需要重置Rank的Tablix重复此操作
- 验证效果
- 先在Visual Studio预览确认Rank排序逻辑正常
- 导出至Excel或PDF,检查每个Tablix的Rank是否从1开始重新计算
内容的提问来源于stack exchange,提问作者A.Steer
相关产品推荐
相关产品推荐

