记录集 - 没有当前记录

Record Set - No current record

我在处理记录集时遇到了一些困难。

代码:

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'

感谢任何帮助

可能的错误是您的 ID 列是数字,而不是字符串,因此您应该删除引号:

Set rs = db.OpenRecordset("SELECT * FROM tbl_Suggestions_Historic WHERE ID = " & ID)

如果是字符串,你需要注意你的spaces。您在 ID 之前添加了 space,在 ID 之后添加了 space。

但是,这是更新查询而不是记录集的一个很好的用例。 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