【问题标题】:SSRS 2008 divide by zero error and "NaN" valueSSRS 2008 除以零错误和“NaN”值
【发布时间】:2013-12-24 12:06:32
【问题描述】:

希望在这里得到一些帮助。我有一个显示 4 个字段的报告:当前 YTD 销售额、以前 YTD 销售额、2 美元之间的差异以及 2 之间的百分比差异。我遇到了除以 0 的错误,并且“NaN”的值作为百分比字段的值。当我在当前 YTD(“OrderInfoConstruction”)中有一个值但在前一个 YTD(“OrderInfoClosedConstruction”)中有一个值时,我得到除以 0 错误,因为我的 % 字段表达式是:

=(Sum(Fields!PRICE_EXT.Value, "OrderInfoConstruction") - 
  Sum(Fields!PRICE_EXT.Value, "OrderInfoClosedConstruction")) / 
  Sum(Fields!PRICE_EXT.Value, "OrderInfoClosedConstruction")

并且 "Sum(Fields!PRICE_EXT.Value, "OrderInfoClosedConstruction") 的值为 0(上一个 YTD 值)。对于 NaN 值问题,它是相同的表达式,但在这种情况下,当前和上一个 YTD是 0。如果值为 0 来解决除以 0 错误以及什么是 NaN 以及如何让它只显示“0”,我怎么能让它不除?我已经找到了一些帮助,但是有不知道如何采用下面的 IIF 语句并将其改编为我上面的语句?

=IIf(Fields!SomeField.Value = 0, 0, Fields!SomeOtherField.Value / IIf(Fields!SomeField.Value = 0, 1, Fields!SomeField.Value))

提前感谢您的帮助!!!

【问题讨论】:

    标签: sql reporting-services


    【解决方案1】:

    如果您想同时为0/0#/0 显示0,您只需检查分母值是否为零。基本上是IIf(PrevYTD = 0, 0, (CurrYTD - PrevYTD) / PrevYTD),或者你的实际字段:

    =IIf(Sum(Fields!PRICE_EXT.Value, "OrderInfoClosedConstruction") = 0, 0, 
      (Sum(Fields!PRICE_EXT.Value, "OrderInfoConstruction") - 
      Sum(Fields!PRICE_EXT.Value, "OrderInfoClosedConstruction")) / 
      Sum(Fields!PRICE_EXT.Value, "OrderInfoClosedConstruction"))
    

    另外,NaN 代表not a number0/0 是产生它的一种操作。

    【讨论】:

    • 谢谢!我得到它不会在语法上抛出错误,但我仍然得到 #error 作为值,并在单击预览时得到以下内容:“(rsRuntimeErrorInExpression):textrun Textbox 12 的值表达式包含错误:尝试除以零”。 ?
    • 我实际上创建了在这篇文章的答案 #4 中提到的公共函数:link,它工作得很好。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-27
    相关资源
    最近更新 更多