【问题标题】:Access object 424访问对象 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

【问题讨论】:

    标签: ms-access vba ms-access-2016


    【解决方案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
      

      【讨论】:

      • 所有那些嵌入的括号都是不必要的。记录集字段引用周围的括号实际上没有任何作用。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-30
      • 2016-06-16
      • 1970-01-01
      相关资源
      最近更新 更多