MS Access: ошибка при округлении оператора IIf - PullRequest
0 голосов
/ 31 января 2019

Этот оператор Round генерирует ошибку, когда условие IIf ложно, он работает, когда условие IIf верно.

У меня очень ограниченный опыт работы с SQL.Я унаследовал эту базу данных Access, которую я пытаюсь настроить, от коллеги, вышедшего на пенсию, поэтому я делал снимки в темноте при поиске и устранении неполадок и объединении синтаксиса.

Это оператор Round, который я пытаюсь заставить работать:

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]

Поле Manual создается этим оператором (не уверен, если это уместно, но решил, что я бы включил):

IIf(([2-billing-Prep Export]!wth_date) Is Not Null,[MemberDays]-[Session Cum]+1,"")) AS Manual

Ожидаемые результаты:% ADM будет заполнен вручную / от 180 до 3 декабря, если значение Manual не равно нулю.Если значение Manual равно нулю,% ADM будет заполняться значениями MemberDays / 180 до 3 декабря.

Фактические результаты: оператор работает, если значение Manual не равно null, но% ADM заполняется значением #ERROR, если значение Manual равно null.Google говорит мне, что это потому, что одно из полей в расчете равно нулю ... но MemberDays никогда не равно нулю.

Результаты редактирования устранения неполадок:% ADM заполняется так, как если бы условие всегда выполнялось, даже для записей, в которых значение Manual равно или, по-видимому, равно нулю.Я в замешательстве, потому что перед редактированием устранения неполадок условие, похоже, распознавало нулевые / ненулевые значения в Руководстве.

1 Ответ

0 голосов
/ 31 января 2019

В выражении IIf оцениваются как истина, так и ложь, и если одно из них не может быть оценено, возвращается ошибка.В вашем случае вы считаете, что Manual иногда может быть Null, но я так не думаю ... потому что в формуле IIf для Manual вы возвращаете пустую строку, когда она должна вернуть Null.Пустая строка не может быть разделена на число.Поэтому:

Измените выражение для поля Manual на

IIf(([2-billing-Prep Export]!wth_date) Is Not Null,[MemberDays]-[Session Cum]+1,Null)) AS Manual
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...