Access 2007-Форма поиска не возвращает все значения из-за пустого поля. - PullRequest
2 голосов
/ 22 марта 2012

Прежде всего, спасибо за ваше время и извините, если некоторые проблемы неясны, это мое первое сообщение здесь.

У меня проблема с пользовательской формой поиска, которую я сделал на ACCESS 2007.

Вот моя база данных:

Database dump

Вот моя форма поиска:

search form

Основная проблемаУ меня есть то, что всякий раз, когда я ввожу значения в имя, фамилию, адрес и т. Д. Это работает совершенно нормально.

Но как только я добираюсь до работы телефона, мобильного или электронной почты, он не показывает мне "ФлоренцияFluflo ", потому что ее поля являются пустыми для этих категорий.

Теперь я попытался в" Критериях "поля Рабочий телефон, чтобы поставить эти:

  • LIKE ""
  • LIKE "*" & [Forms]![frm_search]![WorkPhone1] & "*" OR "IsNull"
  • =" " OR =""
  • LIKE " "
  • LIKE "*"

Ничего не работает ... и это довольностранно, потому что я сделал SQL, и оператор SQL выглядит отлично:

SELECT CLIENTS.First_name, 
       CLIENTS.Surname, 
       CLIENTS.Address, 
       CLIENTS.Suburb, 
       CLIENTS.Postcode, 
       CLIENTS.Home_phone, 
       CLIENTS.Work_phone
FROM CLIENTS
WHERE (((CLIENTS.First_name) Like "*" & [Forms]![frm_search]![Firstname1] & "*") 
    AND ((CLIENTS.Surname) Like "*" & [Forms]![frm_search]![LastName1] & "*") 
    AND ((CLIENTS.Address) Like "*" & [Forms]![frm_search]![Address1] & "*") 
    AND ((CLIENTS.Suburb) Like "*" & [Forms]![frm_search]![Suburb1] & "*") 
    AND ((CLIENTS.Postcode) Like "*" & [Forms]![frm_search]![Postcode1] & "*") 
    AND ((CLIENTS.Home_phone) Like "*" & [Forms]![frm_search]![HomePhone1] & "*") 
    AND **((CLIENTS.Work_phone) Like "*" & [Forms]![frm_search]![WorkPhone1] & "*" OR (CLIENTS.Work_phone) Like ""))**;

1 Ответ

2 голосов
/ 22 марта 2012

Если вы напишите "IsNull" (в кавычках), оно будет считаться строкой.Таким образом, правильный способ проверить, является ли поле пустым, будет выглядеть так: IS NULL Это означает, что все, что вам нужно для работы, - это написать

OR IS NULL

после вашего LIKE оператора

...