SSRS除以零误差表达式

Ste*_*ven 2 expression divide-by-zero reporting-services ssrs-expression

希望你好.我正在编写一份报告,似乎得到了#error.似乎它是一个零除错误,但我无法找到解决方案.表达方式:

=( Sum(Fields!Line_Sell.Value) - Sum(Fields!Line_Cost.Value) ) / Sum(Fields!Line_Sell.Value)
Run Code Online (Sandbox Code Playgroud)

我对RS比较新,但已经尝试过了

ISNULL( )
Run Code Online (Sandbox Code Playgroud)

但没有成功.

任何帮助,我都会很高兴.

谢谢

Mr.*_*ike 5

假设你有一个表达式设置为x/y,其中y可能为零.如您所见,SSRS会将此值更改为#ERR(或有时为NaN).你的第一直觉是测试零

=Iif(y = 0, 0, x/y)
Run Code Online (Sandbox Code Playgroud)

不幸的是,这可能导致调试器警告,表示您试图除以零.这是因为SSRS尝试在编译期间评估整个语句.因此,我们需要为SSRS提供可以评估的值

=x * y ^ -1
Run Code Online (Sandbox Code Playgroud)

这与除以y值相同,但SSRS将其视为除以无穷大,因此可以进行评估.最后一步,您需要确保您的代码可以正确导出到Excel.根据2012 SSRS(可能以后,我还没有测试过),SSRS存在一个问题,即可能将零值导出到Excel为0.000000000000000并导致数据错误丢失.为了纠正这个问题,我们明确输出零值

=Iif(x = 0 OR y = 0, 0, x * y ^ -1)
Run Code Online (Sandbox Code Playgroud)