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 所说,最后一个很好。但是,在编辑和插入时,我更喜欢我的选项。

【讨论】:

我将编辑 mTab​​le 中的记录,所以听起来这可能是要走的路。谢谢你的详细信息。我是自学成才,存在巨大的概念差距,这对我很有帮助。

以上是关于DAO Recordsets:如果我一遍又一遍地重用同一个名字,我应该关闭并设置为空吗?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 OnPreRender 被一遍又一遍地调用?

一遍又一遍地创建 PHP MVC 控制器

为啥这不会一遍又一遍地返回一个新值?爪哇

一遍又一遍地运行代码

Google Cloud Run 一遍又一遍地错误运行

CoreData关系一遍又一遍地保存了两个