记录集 - 没有当前记录

问题描述 投票:0回答:1

我在录制集方面遇到了一些困难。

码:

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,我希望更改更新该特定记录。

错误:收到的消息是“无当前记录”

任何帮助表示赞赏

ms-access access-vba ms-access-2010
1个回答
1
投票

可能的错误是您的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
© www.soinside.com 2019 - 2024. All rights reserved.