MS Access: ошибка при округлении оператора IIf

Этот оператор 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 имеет или кажется нулевым. Я сбит с толку, потому что до редактирования устранения неполадок условие, казалось, распознавало нулевые/не нулевые значения в ручном режиме.

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
0
68
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

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

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

Другие вопросы по теме