DAO Recordsets:如果我一遍又一遍地重用同一个名字,我应该关闭并设置为空吗?
Posted
技术标签:
【中文标题】DAO Recordsets:如果我一遍又一遍地重用同一个名字,我应该关闭并设置为空吗?【英文标题】:DAO Recordsets: Should I close and set to nothing if I am reusing the same name over and over? 【发布时间】:2017-08-17 14:25:00 【问题描述】:从概念上讲,在内存泄漏和最佳实践方面哪个更好:
Do
set mTable = "something"
'do a bunch of stuff
mTable.Close
Set mTable = nothing
Loop
或者:
Do
set mTable = "something"
'do a bunch of stuff
Loop
mTable.Close
Set mTable = nothing
一个比另一个快吗?
【问题讨论】:
最后一个完全OK。 When should an Excel VBA variable be killed or set to Nothing?的可能重复 谢谢古斯塔夫。 GSerg - 谢谢你的链接。我阅读了该主题,它非常有帮助。 【参考方案1】:你忘记了我的偏好:
Do
set mTable = "something"
'do a bunch of stuff
mTable.Close
Loop
Set mTable = nothing
mTable.Close
提交事务,当在记录集上运行大量添加或编辑操作时,您可能会遇到嵌套事务过多的问题(尤其是在处理附件和多值字段时,应避免这种情况如果可能的话)。
Set mTable = Nothing
清除对封闭记录集的引用,实际上没有理由在循环中使用它,因为您在几毫秒后重新分配了其他东西。
这完全取决于你在做什么。正如@Gustav 所说,最后一个很好。但是,在编辑和插入时,我更喜欢我的选项。
【讨论】:
我将编辑 mTable 中的记录,所以听起来这可能是要走的路。谢谢你的详细信息。我是自学成才,存在巨大的概念差距,这对我很有帮助。以上是关于DAO Recordsets:如果我一遍又一遍地重用同一个名字,我应该关闭并设置为空吗?的主要内容,如果未能解决你的问题,请参考以下文章