【发布时间】:2018-11-08 22:12:40
【问题描述】:
希望有经验的人能给我解答/解决我的问题。 在数据库中,我有两列,一列用于控制我们是否显示数据,要显示的数据在第二列中。 我的数据和表达式如下:
ShowPriceOnMatrix | RSP
-------------------------------
0 | 1.48
1 | 10.26 euro -> This one fails with #Error
1 | 4.59
0 | 7.12
=IIF(Fields!ShowPriceOnMatrix.Value = 1, CDbl(Fields!RSP.Value), "")
这个表达式有时会给我#Error。 问题是 RSP 字段被定义为 nvarchar 并且我现在无法更改它,所以我试图转换为数字并显示为。一些用户在字段上输入价格时,他们还会输入文本 ex。 “12.45 欧元”或类似的。当表达式达到带有文本的值时,即使第一列声明不显示价格,整个 IIF 也会失败并显示 #Error。
IIF 的问题在于,如果第一个参数的计算结果为 false,它不会跳过第二个参数 - 因此在我的情况下会产生 #Error。
我试过了
IsNumeric(Cdbl(Fields!RSP.Value))
和
IsError(Cdbl(Fields!RSP.Value))
但他们都给出了一个#Error。从 SSRS 对这些函数的解释来看,它们应该返回一个布尔值,但不知何故我得到了 #Error :)
【问题讨论】:
-
您是否尝试过删除最后一位数字之后的任何内容以删除欧元或英镑等内容。之后,您应该只剩下数值,因此您应该能够在不弹出 #Error 的情况下继续。
-
我无法预测用户是否会输入一个整数(以及多少位数)和/或十进制数以及多少个小数位数。还有其他功能可以帮助我吗?
标签: reporting-services ssrs-2008