Этот оператор Round выдает ошибку, когда условие IIf ложно, оно работает, когда условие IIf истинно.
У меня очень ограниченный опыт работы с SQL. Я унаследовал эту базу данных Access, которую я пытаюсь настроить, от коллеги, вышедшего на пенсию, поэтому я в темноте пытался устранить неполадки и собрать воедино синтаксис.
Это оператор раунда, который я пытаюсь заставить работать:
Round(IIf([Manual] is Not Null,[Manual]/180,[MemberDays]/180),3) AS [%ADM]
Редактирование устранения неполадок:
Round(IIf([Manual] is Not Null,180/180,100/180),3) AS [%ADM]
Поле «Вручную» создается этим оператором (не уверен, что это уместно, но решил, что я бы включил):
IIf(([2-billing-Prep Export]!wth_date) Is Not Null,[MemberDays]-[Session Cum]+1,"")) AS Manual
Ожидаемые результаты: %ADM будет заполнено значением Manual/180 to 3 dec pts, если значение Manual не равно нулю. Если значение Manual равно null, %ADM будет заполнено MemberDays/180 to 3 dec pts.
Фактические результаты: Оператор работает, если Manual не равен нулю, но %ADM заполняется #ERROR, когда Manual равен null. Google говорит мне, что это потому, что одно из полей в расчете имеет значение null... но MemberDays никогда не имеет значение null.
Результаты редактирования по устранению неполадок: %ADM заполняется так, как если бы условие всегда было истинным, даже для записей, где Manual имеет или кажется нулевым. Я сбит с толку, потому что до редактирования устранения неполадок условие, казалось, распознавало нулевые/не нулевые значения в ручном режиме.


В выражении IIf оцениваются как истинная часть, так и ложная часть, и если одна из них не может быть оценена, возвращается ошибка. В вашем случае вы считаете, что Manual иногда может быть Null, но я так не думаю... потому что в формуле IIf для Manual вы возвращаете пустую строку, когда она должна возвращать Null. Пустая строка не может быть разделена на число. Следовательно:
Измените выражение для поля Manual на
IIf(([2-billing-Prep Export]!wth_date) Is Not Null,[MemberDays]-[Session Cum]+1,Null)) AS Manual