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 判断语句,估计是先执行,再判断输出结果。 --------------------编程问答--------------------
补充:.NET技术 , 图表区