如何解决SSRS表达式运行时出现#error报错的问题
SSRS表达式#Error报错修复方案
报错原因
- SSRS的
IIf函数不支持短路径计算,无论判断条件是否成立,真假两个分支都会被执行计算。如果AXPSpotRateCurrency或AXPSpotRate字段存在NULL值,即使判断条件满足(值=1)返回空字符串,另一分支的字符串拼接逻辑遇到NULL值也会触发类型错误,显示#Error。 - 未显式对数值类型字段做字符串转换,隐式类型转换失败也会触发报错。
修复后的表达式
=CStr(First(Fields!AXPPaymentTerm.Value, "SalesInvoiceHeaderFooterDS")) & vbcrlf & IIf( First(Fields!AXPSpotRateCurrency.Value, "SalesInvoiceHeaderFooterDS") = 1, "", "Rate of exchange : " & CStr(First(Fields!AXPSpotRateCurrency.Value, "SalesInvoiceHeaderFooterDS")) & " " & CStr(IIf(IsNothing(First(Fields!AXPSpotRate.Value, "SalesInvoiceHeaderFooterDS")), "", First(Fields!AXPSpotRate.Value, "SalesInvoiceHeaderFooterDS"))) )
优化说明
- 所有参与字符串拼接的数值字段都添加
CStr做显式类型转换,避免隐式转换失败 - 对可能为NULL的
AXPSpotRate字段添加IsNothing判空处理,NULL值会被替换为空字符串,不会打断拼接逻辑 - 原有业务逻辑完全保留,仅修复SSRS特性导致的计算异常
如果
AXPPaymentTerm字段也存在NULL的可能,可以对该字段也套一层IsNothing判空处理即可。
内容的提问来源于stack exchange,提问作者Ashraf Hussain Khan
相关产品推荐
相关产品推荐

