4

我目前正在编写一份报告,其中包含从 Web 服务注入的数据。该网络服务向其发送“双重?” 允许空值。在报告中,它显示返回的值,这些值稍后用于对数字进行求和和平均。我的问题在于显示值的表达式(当我进行计算时,我会看到类似的问题,但每次只有一步......)我正在使用 IIf 语句检查值是否为数字,如果如果不显示空字符串,则显示值(将其转换为双精度值)。当它是一个数值时,该值会正确显示,但是当它为空时,我得到的值是#ERROR。似乎 IIf 语句评估了 IIf 语句的两端!!!

无论如何,我已经做了一些研究,似乎人们建议修改发送代码以检查其是否为空并发送 0在我的情况下这不会有帮助(负数也不会,因为它也会发送负数)。这在我的情况下不起作用的原因是我必须使用全 0 但不是空值来计算平均值。例如...

"100, 0, null" => 这应该是 50 的平均值...如果要转换为 0 的那个 null 将平均为 25...

无论如何继承我的代码...

=IIf(IsNumeric(Fields!Ventas.Value), CDbl(Fields!Ventas.Value), "")

我也尝试过使用 switch 语句并得到同样的问题......

=Switch(IsNumeric(Fields!Ventas.Value) = False, "", IsNumeric(Fields!Ventas.Value) = True, CDbl(Fields!Ventas.Value))

我还通过测试测试了 IIf 条件是否正常工作:

=IIf(IsNumeric(Fields!Ventas.Value), 1, 0)

这工作正常......无论如何,任何帮助将不胜感激,因为我不知道还能尝试什么......下面是我发现的一些关于我的问题的链接,但他们再次建议发送 0 而不是 null ,这在我的情况下是无用的...并且一个链接建议使用开关,但同样不起作用...

链接#1

链接#2

4

2 回答 2

5

我刚刚解决了这个问题,这是如何做到的,希望这可以帮助其他人解决同样的问题!!

=IIf(IsNumeric(Fields!Ventas.Value), CDbl(IIf(IsNumeric(Fields!Ventas.Value), Fields!Ventas.Value, 0)),  "")
于 2012-07-26T15:02:01.547 回答
0

使用可能被零除的表达式,您将遇到同样的问题,例如IIF([B]=0, Nothing, [A]/[B])

我使用了一个简单的解决方法:IIF([B]=0, Nothing, [A]/IIF([B]=0, 1, [B]))

此错误也在Microsoft Connect上注册,但到目前为止 MS 没有回答。

于 2014-10-16T15:11:39.583 回答