gpt4 book ai didi

ms-access - 您输入的表达式引用了一个已关闭或不存在的对象错误

转载 作者:行者123 更新时间:2023-12-03 08:55:54 32 4
gpt4 key购买 nike

我试图在按钮单击事件上打开 2 个 ADODB 记录集,例如:

    Private Sub btn1_Click()
Dim rs As New ADODB.Recordset
Dim rst As New ADODB.Recordset

rs.Open "UPDATE table ITEM = " & Me.ITEM & " where ID = " & ID, CurrentProject.Connection
rs.Close
Set rs = Nothing

rst.Open "Update Table2 set Item2 = " & Me.Item2,CurrentProject.Connection

End Sub

我收到的第一个错误是在 rs.close 上,其中显示:

Operation is not allowed when the object is closed.

我对此错误感到非常困惑,因为我显然没有关闭记录集rs

但即使当我删除 rs.close 我得到:

The expression you have entered refers to an object that is closed or doesn't exist

关于

rst.Open "Update Table2 set Item2 = "& Me.Item2,CurrentProject.Connection

最佳答案

第一个错误(在 rs.Close 上)发生是因为记录集从未打开。

您的 UPDATE(当您包含 SET 关键字时)成功执行,但 UPDATE 不返回记录。所以记录集没有打开。运行以下代码来澄清情况...

Dim rs As New ADODB.Recordset
Dim strUpdate As String

strUpdate = "UPDATE table SET ITEM = " & Me.item & " where ID = " & id
rs.Open strUpdate, CurrentProject.Connection
If rs.State = adStateClosed Then
Debug.Print "can't close recordset because it's already closed"
Else
rs.Close
End If

当你想执行UPDATE时,你不需要记录集;你甚至不需要 ADO。你可以这样做...

CurrentDb.Execute strUpdate, dbFailOnError

关于你的第二个错误,我不确定原因,但怀疑问题出在构建语句文本上。建议您将其添加到代码中并运行它...

Debug.Print "Update Table2 set Item2 = " & Me.Item2

如果这不会触发相同的错误,请从“立即”窗口复制语句文本并将其粘贴到 Access 查询设计器中新查询的 SQL View 中进行测试。如果您不熟悉立即窗口,Ctrl+g 将带您前往那里。

关于ms-access - 您输入的表达式引用了一个已关闭或不存在的对象错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55460190/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com