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

1209
guidout

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

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

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

1

2 ответа на вопрос

0
SeanC

wrap the field in the nz function.

NZ will assign the second argument if the first is null.

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

this would change the test you have to something like this (repeat for whatever tests you need to do):

Like IIf(nz([forms]![Search Fittings]![SizeB_Text],"")="0" ,"*" ,nz([forms]![Search Fittings]![SizeB_Text],"") ) 
0
Máté Juhász

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

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

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

Похожие вопросы