我有一个从数据库作为字符串返回的值,但它可能是 a decimal
,当它是 a 时,decimal
我想将其显示为 adecimal
并以某种方式对其进行格式化,如果不是,decimal
那么我只显示任何值回来。
这是我的代码:
=Iif
(
IsNothing(Fields!Amount.Value) Or Len(Trim(Fields!Amount.Value)) < 1,
Fields!Amount.Value, //have even tried to do CStr(Fields!Amount.Value) in case conversion below makes the report expect decimals for all values
Iif
(
IsNumeric(Fields!Amount.Value),
CDec(Fields!Amount.Value),
Fields!Amount.Value
)
)
上面的注释不是代码的一部分,我只是把它放在这里。无论如何,根据上述情况,所有小数都成功转换为小数并显示正常,但所有那些为空或包含非数字值的字符串都显示为#Error。
这是一个示例结果显示:
72.00
95.00
#Error
20.00
这个表达有什么问题?为什么 SSRS 不能使用 c# 而不是 VB?!!?
更新:我知道问题与转换有关,而不是与检查值是否为空、小于 1 个字符或数字的逻辑有关,因为以下方法有效:
=Iif
(
IsNothing(Fields!Amount.Value) Or Len(Trim(Fields!Amount.Value)) < 1,
"is nothing or less than 1",
Iif
(
IsNumeric(Fields!Amount.Value),
"is numeric",
"is not numeric"
)
)
这将正确显示:
is numeric
is numeric
is nothing or less than 1
is numeric