首页 > 解决方案 > SSRS 表达式在 rdl 中除以零

问题描述

我应该如何处理SSRS 2017rdl表达式中除以零的错误?

我尝试了以下方法,但没有任何效果。

1.

=iif((iif((SUM(Fields!Consumption.Value)/
(iif((Fields!daysINDate.Value)<=0,1,Fields!daysINDate.Value))*30)<=0,0,
(SUM(Fields!Consumption.Value)/
(iif((Fields!daysINDate.Value)<=0,1,Fields!daysINDate.Value))*30)))=0,0,

SUM(Fields!ClosingStock.Value)/(iif((SUM(Fields!Consumption.Value)/
(iif((Fields!daysINDate.Value)<=0,1,Fields!daysINDate.Value))*30)<=0,0,
(SUM(Fields!Consumption.Value)/
(iif((Fields!daysINDate.Value)<=0,1,Fields!daysINDate.Value))*30))))*30)
  1. (SUM(Fields!ClosingStock.Value)/(iif((SUM(Fields!Consumption.Value)/(iif(Fields!daysINDate.Value<=0,1,Fields!daysINDate.Value))*30)<=0 ,0, (SUM(Fields!Consumption.Value)/ (iif(Fields!daysINDate.Value<=0,1,Fields!daysINDate.Value))*30)))*30)

标签: reporting-servicesssrs-2012rdlcssrs-tablixrdl

解决方案


SSRS 检查 iff 语句的两边...如果分子或分母为 0,则会抛出错误。

解决它的一种方法是使用 VB 代码。

右键单击您的报告 -> 报告属性 -> 代码并粘贴以下代码:

Public Function NDZ(Byval a As Decimal,Byval b As Decimal, Byval c As Decimal) As Decimal
'  Fix for divide by zero problem in VB
' calculates  a/b  and either returns result or c if b = 0 


if b = 0 then 
    return c 
else 
    return a/b 
end if 

end function 

现在在您的报告中,在您要执行计算的文本框中输入以下表达式:

=code.NDZ(SUM(Fields!Consumption.Value), Fields!daysINDate.Value, 0) 

因此,如果 Fields!daysINDate.Value 或 SUM(Fields!Consumption.Value) 为 0,则它将返回 0 而不是错误。


推荐阅读