如何避免以下错误消息:“当对象关闭时不允许操作”将记录插入MS Access表时?

问题描述:

我正在使用Microsoft Access 2007.在运行下面的子程序后,我收到以下错误消息:“对象关闭时不允许操作”尽管出现此错误消息,该记录被插入到相应的表中。有人可以解释什么可能导致这个错误?如何避免以下错误消息:“当对象关闭时不允许操作”将记录插入MS Access表时?

Private Sub Save_Click() 

Dim rs As ADODB.Recordset 
Dim SQL As String 

On Error GoTo HandleError 

Set rs = New ADODB.Recordset 

SQL = "INSERT INTO [Hiring Entity] ([Hiring Entity]) VALUES (""RICH PC2"");" 

rs.Open SQL, CurrentProject.Connection, _ 
     adOpenDynamic, adLockOptimistic 

With rs 
    .AddNew 
End With 

    Set rs = Nothing 
     rs.Close 

ExitHere: 

    Exit Sub 

HandleError: 
    MsgBox Err.Description 
    Resume ExitHere 
End Sub 

您正试图访问不存在的对象。

更改此:

Set rs = Nothing 
rs.Close 

这样:

rs.Close 
Set rs = Nothing 

你试图关闭对象就不见了之后。

@ Pow-lan解释了发生的错误,因为您在尝试rs.Close之前将rs设置为Nothing。在设置为Nothing之后,.Close方法不适用于记录集对象变量。

但是,我仍然想知道为什么你使用记录集。您的SQL字符串包含INSERT语句。因此,如果要添加一行,只需执行INSERT声明即可。不需要记录集。

CurrentProject.Connection.Execute SQL 

其实,你甚至不需要ADO(CurrentProject.Connection.Execute)来执行该查询。 DAO应该没问题。

CurrentDb.Execute SQL, dbFailOnError