Фильтр Форма доступа по нескольким фильтрам - PullRequest
1 голос
/ 10 ноября 2019

У меня есть форма, которая фильтрует базу данных, используя несколько фильтров. Однако все фильтры должны быть введены или иметь значение для правильной фильтрации таблицы.

Я хотел бы отметить, что не все входные данные требуются для фильтрации таблицы. Я не уверен, правильно ли это сформулировано.

enter image description here

Пожалуйста, посмотрите, что я пробовал до сих пор.

 DoCmd.ApplyFilter _
 "select * from SageOrderLine_Live where " & _
 "[PromisedDeliveryDate] = " & Format(Me.DateFrom, "\#mm\/dd\/yyyy\#") & " 
 and " & _
 "[CustomerAccountNumber] = """ & Me.CustomerAccountNumber & """" & " and 
 " & _
 "[Code] = """ & Me.Codes & """" & " and " & _
 "[AnalysisCode1] = """ & Me.Analysis & """" & " Or " & _
 "[AnalysisCode2] = """ & Me.Analysis & """" & " Or " & _
 "[AnalysisCode3] = """ & Me.Analysis & """"

1 Ответ

0 голосов
/ 10 ноября 2019

Рассмотрите возможность использования параметризованного запроса, избегая конкатенации и пунктуации в кавычках, напрямую ссылаясь на элементы управления формы. Используйте такой запрос в форме RecordSource, вызывая NZ, чтобы назначить пропущенные параметры поиска самому столбцу. Логически это сделает все параметры поиска необязательными. Обратите внимание, что ниже не учитываются значения NULL.

SQL (сохранить как сохраненный объект запроса для использования в качестве RecordSource формы)

SELECT * FROM SageOrderLine_Live 
WHERE [PromisedDeliveryDate] = NZ(Forms!myform!DateFrom, [PromisedDeliveryDate])
AND [CustomerAccountNumber] = NZ(Forms!myform!CustomerAccountNumber, [CustomerAccountNumber])
AND [Code] = NZ(Forms!myform!Codes, [Code]) 
AND [AnalysisCode1] = NZ(Forms!myform!Analysis, [AnalysisCode1])
AND [AnalysisCode2] = NZ(Forms!myform!Analysis, [AnalysisCode2])
AND [AnalysisCode3] = NZ(Forms!myform!Analysis, [AnalysisCode3])

VBA

Me.Form.Requery
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...