我对Access和VBA编程有一些了解,但我强调一些。从大学开始我就没有真正使用过Access。
我有一个名为Location
的表,其中有两个字段:Postcode
和Group Code
。此列表有1,693,353条记录。
我有另一个名为Group
的表,其中有两个字段:Group Name
和Group Code
。
大约有300种不同的权威记录。
我需要为每个组创建一个表/查询,并在表中包含不同的位置邮政编码。
我知道我可以通过组代码作为标准进行300次不同的查询,并且可以匹配它们,但这意味着要进行300次不同的查询。
我想知道的是,是否有一种自动化此过程的方法。我并不是要求人们为我创建它(除非他们想要),但是如果有人可以推荐学习Access VBA的指南或教程也会有所帮助。
答案 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