【问题标题】:IIF Statement with and operator - SSRS带有 and 运算符的 IIF 语句 - SSRS
【发布时间】:2017-12-08 18:23:53
【问题描述】:

我的 IIF 语句出错,我需要检查 2 个字段是否不为零,以免除以零错误,请有人帮助我:

=iif(isnumeric(sum(Fields!Month13.Value, "SKU")) and 
     isnumeric(sum(Fields!Month1.Value, "SKU")),
(sum(Fields!Month13.Value, "SKU") - sum(Fields!Month1.Value, "SKU")) / 
sum(Fields!Month1.Value, "SKU"),
0)

【问题讨论】:

  • 只需将and sum(Fields!Month1.Value, "SKU") > 0 添加到 IIF 语句的第一部分?
  • Month1Month13的数据类型是什么?您是否希望任何单独的行不是是数字的?

标签: reporting-services iif


【解决方案1】:

这与 SSRS 如何评估 Iif 语句有关。 为避免错误,您必须使用两个 Iif 语句

=
IIF(Sum(Fields!Month1.Value)=0,0,Sum(Fields!Month13.Value) -Sum(Fields!Month1.Value))
/
IIF(Sum(Fields!Month1.Value)=0,1,Sum(Fields!Month1.Value))

另一种选择是使用如下自定义代码函数

Public Function Divider (ByVal Dividend As Double, ByVal Divisor As Double)
If IsNothing(Divisor) Or Divisor = 0
  Return 0
Else
  Return Dividend/Divisor
End If
End Function 

【讨论】:

    【解决方案2】:

    这取决于你想如何处理这个问题

    =iif(isnumeric(sum(Fields!Month13.Value, "SKU")) and 
     isnumeric(sum(Fields!Month1.Value, "SKU")) and
     sum(Fields!Month1.Value, "SKU") > 0,
    (sum(Fields!Month13.Value, "SKU") - sum(Fields!Month1.Value, "SKU")) / 
    sum(Fields!Month1.Value, "SKU"),
    0)
    

    或在 IIF 语句中添加另一个 IIF 语句以检查 month1 的总和是否大于 0,否则为 1。

    =iif(isnumeric(sum(Fields!Month13.Value, "SKU")) and 
     isnumeric(sum(Fields!Month1.Value, "SKU")),
    (sum(Fields!Month13.Value, "SKU") - sum(Fields!Month1.Value, "SKU")) / 
    iif(sum(Fields!Month1.Value, "SKU") > 0, sum(Fields!Month1.Value, "SKU"), 1)
    0)
    

    【讨论】:

      【解决方案3】:

      好的,所以最后我使用了这个:

      =IIf(Sum(Fields!Month13.Value) = 0, -1, 
      iif(Sum(Fields!Month1.Value) = 0,1,
      (Sum(Fields!Month13.Value) - Sum(Fields!Month1.Value)) / 
      IIf(Sum(Fields!Month1.Value) = 0, 1, Sum(Fields!Month1.Value))))
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-12-06
        • 1970-01-01
        • 1970-01-01
        • 2021-12-19
        • 1970-01-01
        相关资源
        最近更新 更多