2013-04-12 85 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屬性以查看記錄集處於什麼狀態。

相關問題