2013-04-12 57 views
3

我有一个ADO记录集变量在用户窗体的类模块中声明。该记录是在窗体的Activate事件开了,我想用代码关闭它在形式的终止事件是这样的:关闭打开的记录集会产生运行时错误

Private Sub UserForm_Terminate() 

If VersionIsReleased Then 
    ThisWorkbook.Parent.Quit 
Else 

    If Not m_rs Is Nothing Then 

     If m_rs.State = adStateOpen Then 
      m_rs.Close 
     End If 

     Set m_rs = Nothing 
    End If 

    Close_CN g_cn 
    ThisWorkbook.Application.Visible = True 
End If 

End Sub 

线m_rs.Close产生一个运行时错误:“操作中不允许这个背景。“任何想法为什么发生这种情况

+0

我在想,当您运行Terminate事件时变量是否已经被破坏? –

+0

此外,也许你不需要根据微软的**明确杀死它** - 请参阅[MSDN博客此条目](http://blogs.msdn.com/b/ericlippert/archive/2004/04 /28/when-are-you-required-to-set-objects-to-nothing.aspx) - 当用户表单从内存中卸载时,该变量将超出范围(并且已被破坏) –

+0

作为一般性评论 - 您希望避免终结器/解构器/退出处理器中的任何运行时错误。在这种情况下,我会把错误恢复下一步作为第一行。 – Juliusz

回答

3

如果在尝试关闭记录集时正在编辑记录集,则可能会发生此错误。确保如果您使用AddNew或更改任何Fields().Value您使用Update在关闭之前保存编辑。您可以检查EditMode属性以查看记录集处于什么状态。

相关问题