根据表中的信息创建查询

时间:2017-04-13 15:38:02

标签: vba ms-access access-vba

我对Access和VBA编程有一些了解,但我强调一些。从大学开始我就没有真正使用过Access。

我有一个名为Location的表,其中有两个字段:PostcodeGroup Code。此列表有1,693,353条记录。

我有另一个名为Group的表,其中有两个字段:Group NameGroup Code。 大约有300种不同的权威记录。

我需要为每个组创建一个表/查询,并在表中包含不同的位置邮政编码。

我知道我可以通过组代码作为标准进行300次不同的查询,并且可以匹配它们,但这意味着要进行300次不同的查询。

我想知道的是,是否有一种自动化此过程的方法。我并不是要求人们为我创建它(除非他们想要),但是如果有人可以推荐学习Access VBA的指南或教程也会有所帮助。

1 个答案:

答案 0 :(得分:1)

此查询将包含您的所有组(我将其命名为SQL_Group) SELECT GroupName, Postcode FROM [Group] INNER JOIN Location ON Group.GroupCode = Location.GroupCode将创建您的群组。

此代码将循环显示每个组:

Public Sub FilterQuery()

    Dim qdf As DAO.QueryDef
    Dim rst As DAO.Recordset
    Dim rst_Groups As DAO.Recordset
    Dim rst_Filtered As DAO.Recordset
    Dim db As DAO.Database

    Set db = CurrentDb

    Set qdf = db.QueryDefs("SQL_Group")
    Set rst = qdf.OpenRecordset
    Set rst_Groups = db.OpenRecordset("Group")

    With rst_Groups
        If Not (.BOF And .EOF) Then
            .MoveFirst
            Do While Not .EOF
                rst.Filter = "GroupName = '" & rst_Groups.Fields("GroupName") & "'"
                Set rst_Filtered = rst.OpenRecordset
                With rst_Filtered
                    If Not (.BOF And .EOF) Then
                        .MoveFirst
                        Do While Not .EOF
                            Debug.Print .Fields("GroupName") & " : " & .Fields("PostCode")
                            .MoveNext
                        Loop
                    End If
                    .Close
                End With
                .MoveNext
            Loop
        End If
        .Close
    End With

    Set rst_Filtered = Nothing
    Set rst = Nothing
    Set rst_Groups = Nothing

End Sub