【问题标题】:Eliminate #Error within Report Builder 3.0 when dividing by 0除以 0 时消除 Report Builder 3.0 中的 #Error
【发布时间】:2014-07-16 23:57:55
【问题描述】:

当以下公式除以 0 时,以下三个都返回 #Error

=(Sum(Fields!Q2ActDelta.Value))/(Sum(Fields!Q1Actuals.Value))

=IIf(Sum(Fields!Q1Actuals.Value)=0,"",(Sum(Fields!Q2ActDelta.Value))/(Sum(Fields!Q1Actuals.Value)))

=IIf((Sum(Fields!Q1Actuals.Value))=0 Or (Sum(Fields!Q2ActDelta.Value))=0," ",(Sum(Fields!Q2ActDelta.Value))/(Sum(Fields!Q1Actuals.Value)))

我需要做什么来消除#Error?为什么报表生成器不遵循真实条件?

谢谢!!

【问题讨论】:

    标签: sql ssrs-2008-r2 reportbuilder


    【解决方案1】:

    这是因为 ReportBuilder 仍然尝试评估错误路径,即使条件解析为真。下面的命令应该可以解决您的问题。

     =IIf(Sum(Fields!Q1Actuals.Value)=0,0,Sum(Fields!Q2ActDelta.Value)/IIf(Sum(Fields!Q1Actuals.Value)=0,1,Sum(Fields!Q1Actuals.Value)))
    

    【讨论】:

    • 谢谢你 - 我刚刚遇到这个问题,它让我发疯了。开发人员编写函数以这种方式进行评估是否有意义?
    • @MattHall 我猜这不是一个有意识的设计决定,而是他们实现表达式评估解析器/引擎的方式的意外结果。
    【解决方案2】:

    上面的答案少了一个括号

     =IIf(Sum(Fields!Q1Actuals.Value)=0,0,Sum(Fields!Q2ActDelta.Value)/IIf(Sum(Fields!Q1Actuals.Value)=0,1,Sum(Fields!Q1Actuals.Value)))
    

    【讨论】:

    • 我已将缺少的括号添加到 the above answer。本来可以给我留言的...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-06
    • 1970-01-01
    相关资源
    最近更新 更多