На основе уравнения , используемого для расчета аннуитета Я бы сказал, что вы передаете либо 0 для числа периодов в году, либо 0 для процентной ставки и, таким образом, получаете ошибку деления на ноль.
Вы проверяете, что PaymentNumber больше нуля, но PaymentNumber не используется в ваших вычислениях IPmt, поэтому, возможно, вы используете неправильное поле в расчете?
В любом случае, независимо от этого, вы должны знать, что IIF - это не оператор, это функция, которая получает два параметра. Следовательно, эти два параметра оцениваются до вызова функции, и, таким образом, ОБА сторонам "оператора if" оцениваются. Это может сбить с толку, потому что вы все равно получите ошибки деления на ноль, когда вы проверяете, что ваш делитель не равен нулю. Просто помните, что это функция, а не оператор, и поэтому нет оценки короткого замыкания, чтобы предотвратить выполнение ошибочной части. Однако существуют обходные пути, в основном связанные с выполнением двух вызовов IIF, чтобы удалить нулевое значение из используемого при вычислении деления:
=IIF(Fields!DivideBy.Value <> 0, Fields!Something.Value / IIF(Fields!DivideBy.Value <> 0, Fields!DivideBy.Value, 1), 0)