访问对象 424
Posted
技术标签:
【中文标题】访问对象 424【英文标题】:Access object 424 【发布时间】:2017-06-13 01:57:15 【问题描述】:我正在运行一个表达式来循环遍历一个记录集,并使用每个记录中的一个字符串在第二个表上运行一个更新查询。基于 LIKE 匹配,它更新字段以创建关系。我在 CurrentDb.Execute 需要运行时错误“424”对象时遇到问题。
表: 事务(要更新的主表) TransactionType(类型或类别的关系表) TransSet(要设置的字符串列表和事务类型)
Private Sub Toggle1_Click()
Dim db As DAO.Database
Dim rst As DAO.Recordset
Set db = CurrentDb Set rst = db.OpenRecordset("TransSet")
Do Until rst.EOF
CurrentDb.Execute ("UPDATE Transactions SET Transactions.TransactionType =" & (TransSet.TransTypeSet) & " WHERE ((Transactions.TransactionText1) Like * " & (TransSet.TransIdent) & "*))")
rst.MoveNext Loop
rst.Close Set rst = Nothing
End Sub
【问题讨论】:
【参考方案1】:引用记录集对象,而不是记录集所基于的表或查询。 文本类型字段参数需要撇号分隔符。
CurrentDb.Execute ("UPDATE Transactions SET TransactionType ='" & rst!TransTypeSet & "'" & _
" WHERE TransactionText1 Like '*" & rst!TransIdent & "*'")
【讨论】:
【参考方案2】:谢谢 - 我也意识到了我的错误并修复了代码。我还更改了表名,以免与保留字混淆。
Private Sub Toggle1_Click()
Dim db As DAO.Database
Dim rst As DAO.Recordset
Set db = CurrentDb
Set rst = db.OpenRecordset("Select * FROM TransSet")
Do Until rst.EOF
CurrentDb.Execute ("UPDATE Trans SET trans.TransactionType =" & (rst!TransTypeSet) & " WHERE ((Trans.TransactionText1) Like '*" & (rst!TransIdent) & "*');")
' MsgBox ("UPDATE Trans SET trans.TransactionType =" & (rst!TransTypeSet) & " WHERE ((Trans.TransactionText1) Like '*" & (rst!TransIdent) & "*');")
rst.MoveNext
Loop
rst.Close
Set rst = Nothing
End Sub
【讨论】:
所有那些嵌入的括号都是不必要的。记录集字段引用周围的括号实际上没有任何作用。以上是关于访问对象 424的主要内容,如果未能解决你的问题,请参考以下文章
在Excel VBA中,如何测试Excel.Range对象变量是否丢失其引用而不会引发运行时错误424 ..?
将对象粘贴到空单元格/工作表时出现错误 424 未被识别为对象