【问题标题】:Applying the same filter to columns in multiple Access tables对多个 Access 表中的列应用相同的过滤器
【发布时间】:2020-12-19 02:54:23
【问题描述】:

假设我在 Access 中有两个未连接的表:


列:ID、名字、生日
1,珍妮特,2000 年 2 月 27 日
2,大卫,2012 年 3 月 5 日


列:ID、猫名、生日
1,爪子,2009 年 6 月 20 日
2,火花,2013 年 10 月 1 日

如何设置一个宏来 (1) 输入用户的日期和 (2) 在每个表(或两个查询,每个表一个)中仅过滤人和猫,在两个单独的查询中,其生日在那个日期之后?

【问题讨论】:

  • 结果将显示在查询中还是两个单独的查询中?
  • @Harun24HR 两个单独的查询。编辑澄清这一点。
  • 您可以在每个查询中设置参数并使用 QueryDefs 编写您的 VBA 宏吗?另请参阅:stackoverflow.com/questions/16568461/…
  • 真的不需要 QueryDefs。基本参数化查询引用表单输入控件。或者将过滤条件应用于表单或报告。

标签: vba ms-access


【解决方案1】:

试一试下面的sub。

Private Sub cmdFilter_Click()
Dim bDate As Date
Dim strSql1 As String
Dim strSql2 As String
Dim qdfPerson As QueryDef
Dim qdfCAT As QueryDef
    
    bDate = InputBox("Enter Birth Date.", "Birth Date", Date)
    strSql1 = "SELECT * FROM Person WHERE BirthDate>=#" & bDate & "#"
    strSql2 = "SELECT * FROM Cat WHERE BirthDate>=#" & bDate & "#"
    
    On Error Resume Next
    'Delete the query if it already exists
    DoCmd.DeleteObject acQuery, "qryPerson"
    DoCmd.DeleteObject acQuery, "qryCat"
    
    Set qdfPerson = CurrentDb.CreateQueryDef("qryPerson", strSql1)
    Set qdfCAT = CurrentDb.CreateQueryDef("qryCat", strSql2)
    
    DoCmd.OpenQuery qdfPerson.Name
    DoCmd.OpenQuery qdfCAT.Name
    
    qdfPerson.Close
    qdfCAT.Close
    Set qdfPerson = Nothing
    Set qdfCAT = Nothing
    
End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-07
    • 2016-09-16
    • 2019-06-05
    • 2020-09-17
    • 1970-01-01
    相关资源
    最近更新 更多