在此SSRS rdlc表达式中处理除以零的异常

时间:2016-09-12 18:41:11

标签: sql reporting-services rdlc

如果值为零,则以下代码将结果显示为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") + "%"

1 个答案:

答案 0 :(得分:0)

这里避免零除错误的最简单方法是不首先创建它!如果将除数Iif表达式中的0替换为第二个返回值为1,则问题就会消失。

那说我认为你的整个表达可以做一些简化。如果我正确读取它你想确定UnitArea中area1的比例,但只有当flag的值为1时才能确定表达式。

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

请注意,我删除了乘数,而是使用格式函数以百分比形式返回除法结果(您还可以通过完全删除格式函数并处理formatting来进一步处理设计师)。

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