---进一步调查后---下例中的“tblABC”必须是一个链接表(到另一个 Access 数据库)。
如果“tblABC”与代码在同一个数据库中,则不会出现问题。
你好,
我们最近升级到 Office 2007。
我们有一种方法,其中我们有一个开放的记录集 (DAO)。然后我们调用另一个执行 SQL 的 sub(下面的 UpdatingSub)。此方法有自己的错误处理程序。如果遇到错误 3381,则调用方法中的记录集将变为“未设置”,我们会收到错误 3420“对象无效或不再设置”。UpdatingSub 中的其他错误不会导致相同的问题。
此代码在 Access 2003 中运行良好。
Private Sub Whatonearth()
Dim rs As dao.Recordset
set rs = CurrentDb.OpenRecordset("tblLinkedABC")
Debug.Print rs.RecordCount
UpdatingSub "ALTER TABLE tblTest DROP Column ColumnNotThere"
'Error 3240 occurs on the below line even though err 3381 is trapped in the calling procedure
'This appears to be because error 3381 is encountered when calling UpdatingSub above
Debug.Print rs.RecordCount
End Sub
Private Sub WhatonearthThatWorks()
Dim rs As dao.Recordset
set rs = CurrentDb.OpenRecordset("tblLinkedABC")
Debug.Print rs.RecordCount
'Change the update to generate a different error
UpdatingSub "NONSENSE SQL STATEMENT"
'Error is trapped in UpdatingSub. Next line works fine.
Debug.Print rs.RecordCount
End Sub
Private Sub UpdatingSub(strSQL As String)
On Error GoTo ErrHandler:
CurrentDb.Execute strSQL
ErrHandler:
'LogError'
End Sub
有什么想法吗?我们正在运行 Office Access 2007 (12.0.6211.1000) SP1 MSO (12.0.6425.1000)。也许看看SP2是否可以分发?
抱歉格式化 - 不知道如何解决这个问题。