SQL Reporting Services IIf语句评估是否引起#ERROR的双方

Lor*_*ink 4 reporting-services ssrs-2008

我目前正在处理一个报告,该报告具有从Web Service注入的数据。该Web服务向其发送“双精度”?允许为空值。在报告中,它显示返回的值,这些值以后将用于求和并求平均值。我的问题是在表达式中显示该值(当我进行计算时,我看到一个类似的问题出现,但是一次只能执行一个步骤...)我正在使用IIf语句检查该值是否为数字,是否因此,如果不显示空字符串,则显示该值(将其转换为双精度)。当其值为数字时,该值正确显示,但是当其为空时,我得到值#ERROR。看来IIf语句评估了IIf语句的两端!!!

无论如何,我已经进行了一些研究,似乎有人建议修改发送代码以检查其是否为空,然后发送0而不是BUT对我而言这无济于事(也不会发送负数,因为它还会发送负数)。在我的情况下,此操作不起作用的原因是我必须使用全0而不是空值来计算平均值。例如...

“ 100,0,null” =>这应该是平均值50 ...如果将该null转换为0,则平均为25 ...

反正这是我的代码...

=IIf(IsNumeric(Fields!Ventas.Value), CDbl(Fields!Ventas.Value), "")
Run Code Online (Sandbox Code Playgroud)

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

=Switch(IsNumeric(Fields!Ventas.Value) = False, "", IsNumeric(Fields!Ventas.Value) = True, CDbl(Fields!Ventas.Value))
Run Code Online (Sandbox Code Playgroud)

我还通过测试以下内容来测试IIf条件是否正常工作:

=IIf(IsNumeric(Fields!Ventas.Value), 1, 0)
Run Code Online (Sandbox Code Playgroud)

并且可以正常工作...无论如何我将不胜感激,因为我不知道可以尝试其他任何帮助...下面是我发现的有关我的问题的一些链接,但他们再次建议发送0而不是null,这对我来说是没有用的...一个链接建议使用开关,但同样没有效果...

链接1

链接2

Lor*_*ink 5

我刚刚在这里解决了这个问题,希望如何解决,希望对其他有同样问题的人有所帮助!

=IIf(IsNumeric(Fields!Ventas.Value), CDbl(IIf(IsNumeric(Fields!Ventas.Value), Fields!Ventas.Value, 0)),  "")
Run Code Online (Sandbox Code Playgroud)