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

SSRS报表将数字转换为货币格式时显示#Error的解决方法

报错原因

  1. SSRS的IIF函数不支持短路求值,无论判断条件是否成立,真假两个分支的表达式都会执行计算,若空值判断逻辑不严谨,即使触发真分支返回固定文本,假分支的格式化操作遇到非法输入也会抛出错误。
  2. 空值判断逻辑和参数类型不匹配:如果你的PurchasePrice参数设置为数值类型(Decimal/Integer等,价格类参数推荐用该类型),空参数的取值为Nothing,和空字符串""做相等判断本身就会触发类型不匹配错误。
  3. 你提供的部分表达式存在拼写错误,Undisclosed被误写为Undiscloded。

解决方案

首先确认你的参数类型,对应使用正确的表达式:

情况1:参数为数值类型(推荐)

直接用IsNothing判断空值,同时在内层加一层空值判断避免IIF不短路导致的报错:

=IIF(IsNothing(Parameters!PurchasePrice.Value), "Undisclosed", Format(IIF(IsNothing(Parameters!PurchasePrice.Value), 0, Parameters!PurchasePrice.Value), "C"))

如果需要保留0位小数,将格式化字符串改为"C0"即可,或者使用FormatCurrency函数:

=IIF(IsNothing(Parameters!PurchasePrice.Value), "Undisclosed", FormatCurrency(IIF(IsNothing(Parameters!PurchasePrice.Value), 0, Parameters!PurchasePrice.Value), 0))

情况2:参数为字符串类型

先判断字符串是否为空,再用Val函数将字符串转为数值后格式化:

=IIF(String.IsNullOrEmpty(Parameters!PurchasePrice.Value), "Undisclosed", Format(Val(IIF(String.IsNullOrEmpty(Parameters!PurchasePrice.Value), "0", Parameters!PurchasePrice.Value)), "C"))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 00:15:03