Какие критерии запроса Access, основанные на пустом поле формы, вернут то, что мне нужно? - PullRequest
1 голос
/ 20 марта 2012

Это ситуация:

Я пытаюсь создать запрос с критериями на основе формы. Конкретное поле формы может быть пустым или иметь конкретное значение. Если поле формы пусто, мне нужно вернуть все записи. Если поле формы не пустое, мне нужно вернуть только те записи, которые совпадают. Однако в этом поле в базе данных есть значения Null, и я не хочу, чтобы они возвращались, когда поле не пустое, но я хочу, чтобы они возвращались, когда поле формы пусто.

Я пытался использовать «[FormField] или Like [FormField] Is Null», который почти работает, но когда поле формы не равно NULL, я также получаю все нулевые записи.

Многие мои попытки до сих пор приводили либо к тому, что записи полей Null никогда не возвращались, либо к ошибке "Это выражение набрано неправильно или слишком сложно".

По каким критериям можно получить эти результаты?

Спасибо

Ответы [ 3 ]

0 голосов
/ 20 марта 2012

Определите специальную запись поля, которая означает «пусто», например «-», «_», «пусто», «пусто» или «x». Пустое поле формы означает «все записи».

Другой подход состоит в том, чтобы иметь три переключателя

(o) All records
( ) Records with empty field xy
( ) Records containing: [ search field here ]

Преимущество состоит в том, что пользователю не нужно изучать специальные соглашения.

Затем вы можете соответствующим образом определить свой запрос, и вам не нужно смешивать разные ситуации в одном запросе

Dim cond As String

Select Case option
    Case 1
        cond = ""
    Case 2
        cond = "field IS NULL"
    Case 3
        cond = "field Like '*" & Me!txtSearch & "*'"
End Select
0 голосов
/ 20 марта 2012

Как насчет:

SELECT Table1.ID, [AText] & "" AS ATextNotNull
FROM Table1
WHERE [AText] & "" Like [Forms]![Form1]![SomeText] 
      & IIf([Forms]![Form1]![SomeText] Is Null,"*","")
0 голосов
/ 20 марта 2012

Попробуйте использовать функцию IIF:

...WHERE [TableColumn] LIKE IIF([FormField] IS NULL, '*', [FormField])...
...