1

это может показаться простым вопросом, но я не могу понять это. У меня есть таблица с несколькими полями. 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 ответа2

0

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

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

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

0

оберните поле в функции 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],"")
        )

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .