小编典典

SSRS IIF语句在值非数字时显示#Error

sql

我有一个可以是十进制或字符串的值。样本

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。

是否可以在同一列中同时显示数字值和字符串值,同时保持数字值的格式?


阅读 216

收藏
2021-04-22

共1个答案

小编典典

该错误与CDbl试图将字符串列转换为数字时函数引发异常有关。是的,我知道您首先要检查它是否为数字,但IIF不是语言构造,它是一个 函数,
并且作为函数,它会先评估所有参数,然后再将其传递给函数。这意味着即使一个参数将被丢弃,True和False参数也会被计算CDbl,并且在对字符串进行计算时会抛出错误。

尝试该Val功能。它具有在传递非数字数据时不引发错误的优点-尽其所能将其转换为数字。

=IIF(IsNumeric(Fields!currentRate.Value), Format(Val(Fields!currentRate.Value), "P2"), Fields!currentRate.Value)
2021-04-22