-1

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

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在末尾保存了 1 行代码。其中,数以百计的潜艇和功能真的可以加起来......

但是大多数编码人员是否更喜欢另一个?有实际理由使用其中一个吗?实际定义和拼写整个事情有好处吗?除了让心皮隧道多花几分钟之外,按照我的方式做这件事有什么真正的节省吗?

4

2 回答 2

1

“CurrentDb 方法创建当前数据库的另一个实例...... CurrentDb 方法使您能够创建多个引用当前数据库的数据库类型变量”来自https://msdn.microsoft.com/en-us/图书馆/办公室/aa221178%28v=office.11​​%29.aspx?f=255&MSPPError=-2147217396
因此,如果您只在代码中使用 CurrentDB 一次,则可以不声明它,但是多次使用它不会是同一个实例,而是总是创建一个新实例,这可能会给您带来奇怪的错误。

于 2015-06-12T19:13:29.963 回答
1

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

快捷版:

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

完整的通用版本:

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

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

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

于 2015-06-12T19:19:10.997 回答