我在录制集方面遇到了一些困难。
码:
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,我希望更改更新该特定记录。
错误:收到的消息是“无当前记录”
任何帮助表示赞赏
可能的错误是您的ID列是一个数字,而不是一个字符串,因此您应该删除引号:
Set rs = db.OpenRecordset("SELECT * FROM tbl_Suggestions_Historic WHERE ID = " & 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