最佳实践问题:
问:在我的Subs结束时,我是否应该关闭打开的Recordset&然后“设置rs = Nothing”。
或者,“Set rs = Nothing”是否足够? (我现在有一个混合包)
Private Sub btnSave_Click()
Dim db As Database
Dim rs As DAO.Recordset
Set db = CurrentDb
Set rs = db.OpenRecordset("Desc_Mfg_Norm", dbOpenTable)
'do stuff
Exit:
rs.Close
Set rs = Nothing
Set db = Nothing
exit sub
答案 0 :(得分:3)
答案是两者都不需要。它们是 Access Basic 的遗留物, Access 1.x 和 2.0 的VBA的前身。
在VBA中,垃圾收集器会为你清理它们。
但许多人 - 通常包括我 - 仍然使用它们来表示你不打算(打算)稍后在函数中使用该对象 - 实际上是Close方法。
请注意,第三方对象 - 如ActiveX组件,例如Excel - 通常必须关闭并终止。这也说明了使用命令 - 在编码时养成习惯。
答案 1 :(得分:1)
人们倾向于将您正在做的事情称为"最佳做法",但您可以绕过尊重所有最佳做法的关闭方法。来自官方文件:
An alternative to the Close method is to set the value of an object variable to Nothing (Set dbsTemp = Nothing).
来源:https://msdn.microsoft.com/en-us/library/office/ff836011.aspx
答案 2 :(得分:0)
我去解决
rs.Close。
如果Not rs为Nothing,则设置rs = Nothing。
请记住,关闭的Recordset可能会重新打开(我有时会用它)。 关闭您打开的所有内容也是一种好习惯...垃圾收集器可能会完成工作...可能不会......