这些陈述之间有什么区别,最喜欢哪一个?

What is the difference between these statements, and which do most prefer?

我注意到我在 Internet 上找到的很多代码都会定义和设置变量,我会简单地避免...例如:

Dim db as Database Dim rs as Recordset Set db = CurrentDB Set rs = db.OpenRecordset

我会这样写:

Dim rs as Recordset Set rs = CurrentDB.OpenRecordset

我在顶部保存了 2 行代码,最后在 Set db = Nothing 中添加了一行代码。其中,数百个子项和函数真的可以加起来...

但是大多数程序员更喜欢一个吗?是否有使用其中一个的实际原因?实际定义和拼写整个事物是否有优势?以我的方式进行操作是否真的有任何节省,除了可以多花几分钟离开心皮隧道?

"The CurrentDb method creates another instance of the current database... The CurrentDb method enables you to create more than one variable of type Database that refers to the current database" 来自 https://msdn.microsoft.com/en-us/library/office/aa221178%28v=office.11%29.aspx?f=255&MSPPError=-2147217396.
因此,如果您在代码中只使用 CurrentDB 一次而不是不声明它,但是多次使用它不会是同一个实例,但总是会创建一个新实例,这可能会给您带来奇怪的错误。

在执行方面,这两种 VBA 方法之间没有真正的区别。但是,第一个是更通用的版本,因为可以使用 Workspace.OpenDatabase 方法将 db 对象设置为本地 DAO 数据库或外部 DAO 数据库。第二个是更快捷的版本,因为通常需要的记录集、querydef 等来自工作的本地数据库。下面是引用外部数据库的例子。

快捷方式版本:

Set db = OpenDatabase ("C:\Path\ToExternalDB\someotherdb.accdb")

完整通用版本:

Set db = DBEngine.Workspaces(0).OpenDatabase("C:\Path\ToExternalDB\someotherdb.accdb")

因此,如果开发人员更改数据库环境(即从本地数据库源过渡到外部数据库源)甚至工作区,他们可以轻松地 更改 set db = ... 行如果开发人员最初只使用 CurrentDb 命名空间,则 添加 这一行到代码中。

这是效率(较少脚本行)和可扩展性(可翻译行)之间权衡决策的一个很好的例子。