2017-06-13 80 views
1

我正在运行一个表达式来遍历一个记录集,并且每个记录中的字符串在第二个表上运行更新查询。基于LIKE匹配,它更新一个字段以创建关系。我在CurrentDb.Execute中需要运行时错误'424'对象时遇到问题。访问对象424

表: 交易(主表更新) TRANSACTIONTYPE TransSet(的类型或类别关系表)(字符串和TRANSACTIONTYPE列表设置为)

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 & "*'") 
1

谢谢 - 我也意识到我的错误并修复了代码。我也改变了表名,不要与保留字混淆。

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 
+0

所有这些嵌入式parens是不必要的。记录集字段引用的参数确实没有做任何事情。 – June7