我有一个可以是十进制或字符串的值。样本
0.41 0.91 "0 / 2" 0.75
我当前的表达式是= IIF(IsNumeric(Fields!currentRate.Value),Format(CDBL(Fields!currentRate.Value),“ P2”),Fields!currentRate.Value)
这将正确返回以百分比格式设置的小数,但是字符串仅显示#Error。我尝试过弄乱IIF语句中的各种逻辑,而改用Switch。但是,小数总是正确显示为百分比,而字符串仅显示#Error。
是否可以在同一列中同时显示数字值和字符串值,同时保持数字值的格式?
该错误与CDbl试图将字符串列转换为数字时函数引发异常有关。是的,我知道您首先要检查它是否为数字,但IIF不是语言构造,它是一个 函数, 并且作为函数,它会先评估所有参数,然后再将其传递给函数。这意味着即使一个参数将被丢弃,True和False参数也会被计算CDbl,并且在对字符串进行计算时会抛出错误。
CDbl
IIF
尝试该Val功能。它具有在传递非数字数据时不引发错误的优点-尽其所能将其转换为数字。
Val
=IIF(IsNumeric(Fields!currentRate.Value), Format(Val(Fields!currentRate.Value), "P2"), Fields!currentRate.Value)