通过多个过滤器过滤访问表单
Posted
技术标签:
【中文标题】通过多个过滤器过滤访问表单【英文标题】:Filter Access form by multiple filters 【发布时间】:2019-11-10 16:31:30 【问题描述】:我有一个使用多个过滤器过滤数据库的表单。但是,所有过滤器都需要输入或具有正确过滤表的值。
我希望并非所有输入都需要过滤表格。 我不确定这是否用词正确。
请看看我到目前为止所做的尝试。
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】:考虑使用参数化查询,通过直接引用表单控件来避免串联和引用标点符号。在调用 NZ
的表单 RecordSource 中使用这样的查询将缺少的搜索参数分配给列本身。从逻辑上讲,这将使所有搜索参数都是可选的。请注意以下不考虑 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
【讨论】:
以上是关于通过多个过滤器过滤访问表单的主要内容,如果未能解决你的问题,请参考以下文章