RDLC表达式除以零#Error

时间:2013-12-27 09:20:12

标签: vb.net expression rdlc divide-by-zero

所以我想计算报告中上个月和本月数据使用的差异。两者都是小数。我在报告中有这个表达

IIf(Fields!LastMonth.Value=0, ((Fields!ThisMonth.Value-Fields!LastMonth.Value)*100), Floor(((Fields!ThisMonth.Value-Fields!LastMonth.Value)/Fields!LastMonth.Value)*100)) * " %"

此语句继续返回#Error,我尝试将语句简化为

IIf(Fields!LastMonth.Value=0, "0","NOT 0")

并且它向右返回0,这意味着它处于正确的状态。

我猜语句Floor(((Fields!ThisMonth.Value-Fields!LastMonth.Value)/Fields!LastMonth.Value)*100)导致错误,因为遇到了被零除错误。

我不明白的是,如果lastMonth.value为0,我说明条件将落到第一个条件,这可能导致没有被零除的条件。为什么第二个条件会影响整个语句导致错误?我认为第二个陈述是不会达到的,因为它会落到第一个条件,对吗?

有人可以解释一下吗?或者有没有最好的方法来避免这种被零除的情况?

最好的问候。

2 个答案:

答案 0 :(得分:1)

IIf(Fields!LastMonth.Value=0, (( CInt(Fields!ThisMonth.Value)- 
CInt(Fields!LastMonth.Value))*100), Floor(((CInt(Fields!ThisMonth.Value)- 
CInt(Fields!LastMonth.Value))/ CInt(Fields!LastMonth.Value))*100)))

答案 1 :(得分:0)

  

IIF评估所有论点。如果任何参数产生错误,那么   整个函数都会抛出错误,无论哪个   应该返回三个参数。

引自this answer