Vba 这些陈述之间的区别是什么?你最喜欢哪一种?

Vba 这些陈述之间的区别是什么?你最喜欢哪一种?,vba,coding-efficiency,Vba,Coding Efficiency,我注意到,我在互联网上找到的很多代码都会定义和设置变量,我会避免这些变量,例如: Dim db作为数据库 将遥感器作为记录集 Set db=CurrentDB Set rs=db.OpenRecordset 我将这样写: Dim rs作为记录集 Set rs=CurrentDB.OpenRecordset 我在顶部保存了两行代码,在最后保存了一行代码以Set db=Nothing。其中,数百个SUB和函数可以真正相加 但是,大多数编码人员是否更喜欢一种编码方式?是否有实际理由使用其中一种?实际定

我注意到,我在互联网上找到的很多代码都会定义和设置变量,我会避免这些变量,例如:

Dim db作为数据库
将遥感器作为记录集
Set db=CurrentDB
Set rs=db.OpenRecordset

我将这样写:

Dim rs作为记录集
Set rs=CurrentDB.OpenRecordset

我在顶部保存了两行代码,在最后保存了一行代码以
Set db=Nothing
。其中,数百个SUB和函数可以真正相加

但是,大多数编码人员是否更喜欢一种编码方式?是否有实际理由使用其中一种?实际定义和解释整个事情是否有优势??按照我的方式做,除了把carpel tunnel推迟几分钟之外,还有什么真正的节约吗?

“CurrentDb方法创建当前数据库的另一个实例……CurrentDb方法使您能够创建多个类型为database的变量,这些变量引用当前数据库”from.

因此,如果您在代码中只使用一次CurrentDB,那么不声明它是很好的,但是多次使用它将不是同一个实例,而是总是创建一个新实例,这可能会为您创建奇怪的错误。

就执行而言,这两种VBA方法之间没有真正的区别。但是,第一个是更通用的版本,因为可以使用该方法将
db
对象设置为本地DAO数据库或外部DAO数据库。第二个版本是更快捷的版本,通常需要记录集、querydfs等从工作的本地数据库派生。下面是引用外部数据库的示例

简写版:

Set db = OpenDatabase ("C:\Path\ToExternalDB\someotherdb.accdb")
完整通用版本:

Set db = DBEngine.Workspaces(0).OpenDatabase("C:\Path\ToExternalDB\someotherdb.accdb")
因此,如果开发人员更改数据库环境(即从本地数据库源转换到外部数据库源)甚至工作空间,如果开发人员最初只使用了
CurrentDb
名称空间,他们可以轻松地更改
set db=…
行,而不是将这一行添加到代码中


这是一个很好的例子,说明了在效率(更少的脚本行)和可伸缩性(可翻译行)之间做出权衡决定。

为什么会有人否决这个问题?也许他们认为你在征求意见。关于代码效率的建议,还有。