You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SSRS 2016自定义代码遍历多值参数时出现#Error问题求助

解决SSRS自定义代码中多值参数循环索引报错的问题

首先咱们来定位问题根源:你写的循环上限Report.Parameters!parameter.Count()会导致索引越界,这就是出现#Error的核心原因。

在SSRS的VB自定义代码里,多值参数的Value集合是0基索引,而Count()返回的是参数中选中值的总个数。比如如果参数有3个选中值,合法索引范围是0、1、2,但你的循环写的是For i As Integer = 0 To Report.Parameters!parameter.Count(),这会让i遍历到3——这个索引对应的元素根本不存在,自然就抛出错误了。而你硬编码索引时只用了合法的索引(比如0、1),所以不会触发报错。

修复后的循环代码

把循环上限改成Count() - 1,确保索引始终在合法范围内:

While (dt < endDate)
    For i As Integer = 0 To Report.Parameters!parameter.Count() - 1
        If Report.Parameters!parameter.Value(i) = dt Then
            count = count +1
            Exit For
        End If
    Next i
    dt = dt.AddDays(1)
End While

更简洁的替代方案

其实不用手动写循环,SSRS的多值参数Value集合原生支持Contains方法,直接判断日期是否存在会更高效,也不容易出错:

While (dt < endDate)
    If Report.Parameters!parameter.Value.Contains(dt) Then
        count = count +1
    End If
    dt = dt.AddDays(1)
End While

这样就能完美实现你预期的「每次匹配时count加1」的需求啦。

内容的提问来源于stack exchange,提问作者Ruzay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 03:48:41