【问题标题】: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 & """"

【问题讨论】:

    标签: vba ms-access


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-19
      • 2017-05-19
      • 2020-05-04
      • 2015-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多