【发布时间】:2013-12-10 20:07:17
【问题描述】:
我有两个表,我试图从表 B 中获取数据到表 A。如果在表 B 中找不到表 A 的 ID,则将其保留为空。 例如。
AID Sttl BID Sttl
4 88 3
20 92 2
88 3 100 8
92 2 500 10
800
我目前的代码只返回表 A 中的第一个相似记录。它不返回下一个匹配记录(例如,它为 AID 88 返回 3,但不为 AID92 返回任何内容)。我错过了什么?
Dim db As dao.Database
Dim rs1 As dao.Recordset
Dim rs2 As dao.Recordset
Set db = CurrentDb()
Set rst1 = db.OpenRecordset(cstrFromtbl, dbOpenDynaset)
Set rst2 = db.OpenRecordset(cstrTotbl, dbOpenDynaset)
Do While Not rs2.EOF
If rs2.Fields("A.ID") = rs1.Fields("B.ID") Then
rs2.Edit
rs2.Fields("Sttl") = rs1.Fields("Sttl")
rs2.Update
Else
rs2.Edit
rs2.Fields("Sttl") = Null
rs2.Update
End If
rs2.MoveNext
Loop
Set rs1 = Nothing
Set rs2 = Nothing
Set dbs = Nothing
End Function
【问题讨论】:
-
首先,您需要确保按 id 订购表格。而且我在您的代码中没有看到类似 rs1.MoveNext 的内容。这段代码对吗?
标签: vba loops ms-access-2007