我在录制集方面遇到了一些困难。
CODE:
Dim db As DAO.Database
Dim rs As DAO.Recordset
Set db = CurrentDb
Set rs = db.OpenRecordset("SELECT * FROM tbl_Suggestions_Historic WHERE ID = ' " & ID & " '")
rs.Edit
rs("Status") = "Closed By User"
rs("ReasonClosed") = ClosedWhy
rs.Update
Set rs = Nothing
问题: 我有一个列表框,其中包含一个帐户列表。单击一个帐户时,文本框将填充记录ID,我希望更改更新该特定记录。
错误: 收到的消息是“No Current Record'
”感谢任何帮助
答案 0 :(得分:1)
可能的错误是您的ID列是数字,而不是字符串,因此您应该删除引号:
Set rs = db.OpenRecordset("SELECT * FROM tbl_Suggestions_Historic WHERE ID = " & ID)
如果是字符串,您需要注意自己的空间。您在ID之前包含一个空格。
但是,这是更新查询而不是记录集的一个很好的用例。 Imo,你应该删除所有的记录集代码,然后使用它:
CurrentDb.Execute "UPDATE tbl_Suggestions_Historic SET [Status] = 'Closed By User', [ReasonClosed] = '" & ClosedWhy & "' WHERE ID = " & ID
或者,如果要正确执行,请使用参数。我没有使用它们,因为你没有
请参阅下文,了解使用参数的示例
Dim db As DAO.Database
Dim qdf As DAO.QueryDef
Set db = CurrentDb
Set qdf = db.CreateQueryDef("","UPDATE tbl_Suggestions_Historic SET [Status] = 'Closed By User', [ReasonClosed] = ? WHERE ID = ?" )
qdf.Parameters(1) = ClosedWhy
qdf.Parameters(2) = ID
qdf.Execute