Microsoft Access. Работа с запросами и нулевыми значениями

Это может показаться простым вопросом, но я не могу понять это. У меня есть таблица с несколькими полями. 3 из них (SizeA, SizeB, SizeC) являются числами, и у меня есть форма, которая использует запрос для запроса таблицы. Теперь размер A всегда не равен нулю, но SizeB и C могут быть равны нулю. Вот критерии, которые я использую для размеров A, B и C:

Like IIf([forms]![Search Fittings]![SizeA_Text]="0","*",[forms]![Search Fittings]![SizeA_Text])
Like IIf([forms]![Search Fittings]![SizeB_Text]="0","*",[forms]![Search Fittings]![SizeB_Text])
Like IIf([forms]![Search Fittings]![SizeC_Text]="0","*",[forms]![Search Fittings]![SizeC_Text])

Как видите, if проверяет, равно ли поле формы Size*_Text 0 или нет. Проблема в том, что записи таблицы с SizeB или SizeC не установлены (поэтому они нулевые) не отображаются в поиске. Решение может выглядеть следующим образом:

Like IIf([forms]![Search Fittings]![SizeC_Text]="0",Like "*" Or Is Null,[forms]![Search Fittings]![SizeC_Text])

но это не работает Есть ли у вас какие-либо предложения о том, как я могу реализовать эту логику?

Спасибо, Гвидо

2 ответа

Вам нужно использовать немного более сложные критерии, это невозможно сделать в течение одного iif() (вы не можете проверить запись таблицы на нулевое значение в пределах like заявление).

([...sizeC_text]="0" and isnull(<your field>)) or <your field> like iif([...sizeC_text]="0","*",[...sizeC_text])

Также обратите внимание, что это условие верно, если вы используете его в VBA, если вы поместите его в выражение SQL, чем заменить isnull() функция к ... Is Null

Обернуть поле в nz функция.

NZ назначит второй аргумент, если первый равен нулю.

nz("SuperUser","default") = "SuperUser"
nz(NULL,"default") = "default"

это изменит ваш тест на что-то вроде этого (повторите для любых тестов, которые вам нужно сделать):

Like IIf(nz([forms]![Search Fittings]![SizeB_Text],"")="0"
         ,"*"
         ,nz([forms]![Search Fittings]![SizeB_Text],"")
        )
Другие вопросы по тегам