当前位置:编程学习 > C#/ASP.NET >>

RDLC 中设置的达标率公式为什么总出现#Error?

在Table中的某一列“全月达标率”的EXPRESSION设置:

=IIF(Sum(Fields!CTDPlanSalesAmount.Value).Equals(0), 
 0
 Round(100*Sum(Fields!CTDSalesAmount.Value) / Sum(Fields!CTDPlanSalesAmount.Value),2)
)

但Sum(Fields!CTDPlanSalesAmount.Value)为0时,总出现#Error,奇怪,我如果

=IIF(Sum(Fields!CTDPlanSalesAmount.Value).Equals(0),  "Red" "Black")

又能正常显示Red和Black:
商品品牌名称
 全月销售金额
 全月计划销售金额
 全月达标率
 全月达标率2
 
a
 0.0000
 50000.0000
 ¥0.00
 Black
 
b
 0.0000
 0.0000
 #Error
 Red
 
c
 2065256.6500
 14860000.0000
 ¥13.90
 Black
 
d
 -269318.0000
 0.0000
 #Error
 Red
 
e
 0.0000
 0.0000
 #Error
 Red
 
f
 532547.5800
 760000.0000
 ¥70.07
 Black
 
g
 91680.9500
 960000.0000
 ¥9.55
 Black
 
h
 0.0000
 0.0000
 #Error
 Red
 

--------------------编程问答-------------------- 商品品牌名称 全月销售金额 全月计划销售金额 全月达标率 全月达标率2
a         0.0000         50000.0000 ¥0.00         Black
b         0.0000         0.0000         #Error         Red
c         2065256.6500 14860000.0000 ¥13.90         Black
d         -269318.0000 0.0000         #Error         Red
e         0.0000         0.0000         #Error         Red
f         532547.5800 760000.0000 ¥70.07         Black
g         91680.9500 960000.0000 ¥9.55         Black
h         0.0000         0.0000         #Error         Red
--------------------编程问答-------------------- IIF不管判断条件是否成立,两个表达式都会执行。所以当条件成立时执行第二个语句就会出现分母为0的错误。可以改为

= Round(
    IIF(Sum(Fields!CTDPlanSalesAmount.Value).Equals(0), 0, 100*Sum(Fields!CTDSalesAmount.Value))
    /
    IIF(Sum(Fields!CTDPlanSalesAmount.Value).Equals(0), 1, Sum(Fields!CTDPlanSalesAmount.Value))
    ,IIF(Sum(Fields!CTDPlanSalesAmount.Value).Equals(0), 0, 2)
)

总之就是不能出现会引起错误的表达式。 --------------------编程问答-------------------- 有用,谢了。

看来这里的IIF并不是真正的 IF 判断语句,估计是先执行,再判断输出结果。 --------------------编程问答--------------------
引用 2 楼  的回复:
IIF不管判断条件是否成立,两个表达式都会执行。所以当条件成立时执行第二个语句就会出现分母为0的错误。可以改为

VB code


= Round(
    IIF(Sum(Fields!CTDPlanSalesAmount.Value).Equals(0), 0, 100*Sum(Fields!CTDSalesAmount.Value))
    /
    IIF(Sum(F……

补充:.NET技术 ,  图表区
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,