【问题标题】: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 来进一步简化)。
你不必像我一样用缩进来布局表达式,但是表达式构建器会忽略空格,它确实使更大的表达式更容易阅读,所以我认为这是一个好习惯。