【发布时间】:2020-07-08 19:23:06
【问题描述】:
我有一个名为“qryAddressBook”的查询。我希望能够垂直循环遍历名为“Client_Address”的特定字段中的记录,并将这些记录显示在表“tblClient”的单行中。
我过去曾使用“Set rs = dbs.OpenRecordset("tblAddressBook", dbOpenTable)" 对表格进行此操作,没有任何问题....
...我遵循 Access Database.OpenRecordset 方法 (DAO) 中显示的语法:https://docs.microsoft.com/en-us/office/client-developer/access/desktop-database-reference/database-openrecordset-method-dao
我继续收到一条错误消息,提示“对象变量或未设置块变量”,它突出显示了我的代码中的以下文本:
Set rs = dbs.OpenRecordset("qrySpecificNCR", dbOpenDynaset)
这是我的总代码:
DoCmd.OpenQuery "qryAddressBook"
Dim dbs As DAO.Database
Dim rs As Recordset
Dim SeqNum As Integer
Set dbs = CurrentDb
SeqNum = 1
Set rs = dbs.OpenRecordset("qryAddressBook", dbOpenDynaset)
Do Until rs.EOF
Dim srtAddress As String
srtAddress = rs.Fields("Client_Address").Value
Dim strSQLAddress As String
strSQLAddress = "UPDATE tblClient SET " & SeqNum & " = '" & srtAddress & "' WHERE Record = 1;"
DoCmd.RunSQL strSQLAddress
SeqNum = SeqNum + 1
rs.MoveNext
Loop
【问题讨论】:
-
如果这段代码被复制,而不是输入,那么有一个错字——你声明
dbs,但是在使用dbs之前使用dsb将它设置为等于数据库对象打开记录集。 -
最好包含一个“选项显式”,然后编译您的代码。这将防止一些可能难以发现的错误。
-
我是否正确使用了“Set rs = dbs.OpenRecordset("qryAddressBook", dbOpenDynaset)"?
-
Wayne,你能解释一下我是如何打开“选项显式”的吗?
-
将选项显式设置为包含在 VBE 中的新模块的标题中 > 工具 > 选项 > 选中需要变量声明。必须手动添加到现有模块。