SSRS钻取报表报错:重载解析失败-参数无法从Object转换为String
解决SSRS Series Groups分组SWITCH表达式的类型转换错误
这个问题我之前做SSRS动态分组的时候正好碰到过,报错的根源是SWITCH函数的所有分支返回值类型不统一!
你当前的表达式里,各个Fields!XXXWHID.Value的类型可能不一样(比如有的是整数类型,有的是字符串),而SSRS要求SWITCH函数的每一个返回结果必须是相同的数据类型,否则就会触发Overload Resolution failed - Parameter can not convert from Object to String这个类型转换错误。
解决方案:统一所有分支的返回值类型
把每个字段的值都转换成字符串类型(用CStr()函数包裹),修改后的表达式如下:
=SWITCH( Parameters!Scope.Value = "Region", CStr(Fields!GLRegionWHID.Value), Parameters!Scope.Value = "Program Type", CStr(Fields!EHRProgramTypeWHID.Value), Parameters!Scope.Value = "Program", CStr(Fields!GLProgramWHID.Value), Parameters!Scope.Value = "Staff", CStr(Fields!PaycomEmployeeWHID.Value) )
额外检查点
- 确认
Parameters!Scope的参数类型是字符串(在报表参数设置里查看),避免参数本身类型不匹配的问题; - 如果后续还有新增的Scope选项,记得同样用
CStr()(或者你需要的统一类型)包裹对应字段,保持返回类型一致。
这样修改后,SWITCH函数的所有分支都返回字符串类型,SSRS就能正确识别并执行分组了,钻取报表的逻辑也能正常运行。
内容的提问来源于stack exchange,提问作者Hell-1931
相关产品推荐
相关产品推荐

