RDLC报表小数求和运算输出错误结果问题咨询
错误原因
- 数值转换受系统区域配置影响:如果你的报表运行环境的区域设置中,小数点为逗号
,、千分符为点.,10.5会被CDbl函数识别为105,20.5识别为205,求和后刚好得到310的错误结果 - 原表达式逻辑有瑕疵:
IIf判断的两个返回值类型不统一(符合USD条件时返回格式化字符串,不符合时返回数字0),可能触发隐式转换异常;空值处理的容错性也不足
修复方案
- 可选:统一报表运行环境的区域配置,将小数点设置为
.,从底层避免数值识别偏差 - 直接修改表达式:用不受区域配置影响的
Val函数替换CDbl,Val默认以.作为小数点识别符,不会出现上述识别错误,同时统一返回值的类型为格式化字符串
修正后代码
=IFF(Fields!CURRENCY.Value = "USD" , FormatNumber(Sum(Val(Iff(Fields!AMOUNT.Value = "","0", Fields!AMOUNT.Value))),2), "0.00")
内容的提问来源于stack exchange,提问作者chc
相关产品推荐
相关产品推荐

