SSRS表达式抛出#Error - 可能的原因?

时间:2011-08-16 13:01:37

标签: ssrs-2008

=IIf(Sum(Fields!CUSTOMER_PROFIT.Value) <= 0 Or  Sum(Fields!REVENUE.Value) <= 0,
 "N/A",Round(Sum(Fields!CUSTOMER_PROFIT.Value)/Sum(Fields!REVENUE.Value)*100,2))  

示例输出如下:

 customer profit     revenue      customerprofitability  
 105003.73           227912.88    46.07    
-8560.57             0.00         #Error    
 610.53             -1306.0       N/A

为什么当除以零时给出#error但是当除以负值时给出N / A?我不希望#error出现在customerprofitability列中。感谢任何帮助!

1 个答案:

答案 0 :(得分:3)

SSRS将完全评估您的表达式,即使您希望它在iff语句的“true”部分之后停止。

因此,你需要使iff语句的'fail'部分在数学上对所有行都是合理的(当前如果在第二行失败并且除以零)。

这可以为您提供所需的结果

=IIf(
Sum(Fields!CUSTOMER_PROFIT.Value) <= 0 
    Or  Sum(Fields!REVENUE.Value) <= 0,
     "N/A",
     Round(Sum(Fields!CUSTOMER_PROFIT.Value)/IIF(Sum(Fields!REVENUE.Value)= 0, 1,Sum(Fields!REVENUE.Value))*100,2
   )
)