通过多个过滤器过滤访问表单

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

【讨论】:

以上是关于通过多个过滤器过滤访问表单的主要内容,如果未能解决你的问题,请参考以下文章

在vba中使用多个字符串过滤访问报告,获取数据类型不匹配

使用多个相互构建的组合框过滤表单

如何过滤表单中具有多个组合框的 Access 子表单?

使用带有数值的组合框访问过滤器表单

它是一个访问错误吗?我的 txtBox 表单过滤问题在拆分数据库中输入值

如何过滤 Backpack 上的填充表单值?