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
相关产品推荐
相关产品推荐

