如何避免以下错误消息:“当对象关闭时不允许操作”将记录插入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