2016-09-30 15 views
0

У меня есть форма доступа MS с дополнительными критериями для выполнения запроса. Пользователь будет выбирать флажок и вводить значение, а затем запускать запрос на основе выбранных полей и ввода. Проблема, которую я имею для одного поля, в частности, - это таблицы NULL Values. Критерии запроса выглядит следующим образом:Использование OR Operator для нулевых значений в заявлении IIF

IIf([Checkbox]=-1,[Data in Form],([Field]Like "*" Or [Field]Is Null)) 

Если я использую этот код в качестве критерия для поля в запросе, он работает только тогда, когда значение в форме и флажок. Если я использую код в качестве выражения, он возвращает значения NULL, когда флажок не выбран, но возвращает все записи при выборе флажка и вводится значение. если я использую Like "*" or Is Null в качестве критерия, он будет возвращать все записи, поэтому почему он не работает как часть заявления IIF?

+1

Как «[Поле] Как« * »Или [Поле] Является ли Null отличным от' TRUE'? – onedaywhen

+0

Как и было сказано, ваше условие всегда истинно (оно либо имеет значение, либо равно null, либо оно истинно) – CyberClaw

+0

Его вроде как фильтр, если флажок «ИСТИНА» используется пользователем данных, отправляется, чтобы указать возвращенные результаты, если его «FALSE» возвращает все значения, которые включают значения NULL –

ответ

0

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

правило Стандартная логика переписывают

IF A THEN B 

эквивалентно

(NOT A OR B) 

Так что ваши условия поиска может быть что-то вроде:

WHERE (checkbox1 = FALSE OR field1 = input1 OR field1 IS NULL) 
    AND (checkbox2 = FALSE OR field2 = input2 OR field2 IS NULL) 
    AND (checkbox3 = FALSE OR field3 = input3 OR field3 IS NULL) 

UPDATE

Что-то подобное:

WHERE NameColumn = NameInput 
     AND (SearchEditioncheckbox = FALSE 
      OR EditionColumn = EditionInput 
      OR EditionColumn IS NULL) 

ДАЛЕЕ UPDATE

Может быть:

WHERE NameColumn = NameInput 
     AND (SearchEditioncheckbox = FALSE 
      OR EditionColumn = EditionInput) 

или, возможно:

WHERE NameColumn = NameInput 
     AND (SearchEditioncheckbox = FALSE 
      OR EditionColumn = EditionInput 
      OR (EditionColumn IS NULL AND EditionInput IS NULL) 
+0

да, это должно работать теоретически, но, к сожалению, это не так. попробовал это так же Вот пример того, что я пытаюсь выполнить Если пользователь ищет книгу в библиотеке, и они могут искать по имени и редакции. Они должны иметь возможность искать по имени, оставляя флажок в поле «Редактирование» и поле пустым, которое должно возвращать все значения, включая NULL, однако, если они задают выпуск, тогда он должен возвращать значения только на основе имени и издания. –

+0

. Какая цель использования флажков ?Если вы введете значение, все записи, содержащие это значение, будут восстановлены. Если вы не введете значение, будут восстановлены все записи (включая те, у которых есть значения NULL) .... – Rene

+0

@Rene, пока вы правы в том смысле, что флажки не предоставляют каких-либо дополнительных функций, принцип то же самое: «Если флажок установлен» - это то же самое, что «Если текстовое поле пуст». Проблема действительно заключается в захвате всех значений, включая NULL или введенное значение. –