【问题标题】:Handle divide by zero exception in this SSRS rdlc expression在此 SSRS rdlc 表达式中处理除以零异常
【发布时间】:2016-09-12 18:41:10
【问题描述】:

如果值为零,则以下代码将结果显示为 Nan%:

=FORMAT(((Sum(IIF(Fields!flag.Value=1,CINT(Fields!area1.Value),0)))
/ (Sum(IIF(Fields!flag.Value=1,CINT(Fields!UnitArea.Value),0))) *100),"N") + "%"

【问题讨论】:

  • 尝试使用here 发布的自定义代码。然后你只需要像这样在你的 tablix 中调用 Quotation 函数:=FORMAT(Code.Quotation(Sum(IIF(Fields!flag.Value=1,CINT(Fields!area1.Value),0)), Sum(IIF(Fields!flag.Value=1,CINT(Fields!UnitArea.Value),0))),"P0")

标签: sql reporting-services rdlc


【解决方案1】:

这里避免除以零错误的最简单方法是一开始就不要创建它!如果将除数 Iif 表达式中的 0 作为第二个返回值替换为 1,那么问题就消失了。

也就是说,我认为您的整个表达方式可以稍微简化一下。如果我没看错,你想确定 UnitArea 中 area1 的比例,但前提是 flag 的值为 1。表达式可以这样写:

=Format(
    Iif(
        Fields!flag.Value = 1,
        CInt(Fields!area1.Value) / CInt(Fields!UnitArea.Value),
        Nothing
    ),
    "Percent"
)

请注意,我已经删除了乘数,而是使用 Format 函数以百分比形式返回除法结果(您也可以通过完全删除 Format 函数并在设计器中处理 formatting 来进一步简化)。

你不必像我一样用缩进来布局表达式,但是表达式构建器会忽略空格,它确实使更大的表达式更容易阅读,所以我认为这是一个好习惯。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-28
    相关资源
    最近更新 更多