所以我想计算报告中上个月和本月数据使用的差异。两者都是小数。我在报告中有这个表达
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,我说明条件将落到第一个条件,这可能导致没有被零除的条件。为什么第二个条件会影响整个语句导致错误?我认为第二个陈述是不会达到的,因为它会落到第一个条件,对吗?
有人可以解释一下吗?或者有没有最好的方法来避免这种被零除的情况?
最好的问候。
答案 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。