这些陈述之间有什么区别,以及最喜欢哪种陈述



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

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

我会把它写成:

Dim rs as Recordset Set rs = CurrentDB.OpenRecordset

我在顶部保存了 2 行代码,最后保存了 1 行Set db = Nothing代码。 其中,数百个子和功能可以真正加起来......

但是,大多数编码人员是否更喜欢一个? 是否有实际理由使用其中之一? 实际定义和拼写整个事情是否有优势? 按照我的方式做这件事有什么真正的节省

,除了多花几分钟时间吗?

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

快捷版本:

Set db = OpenDatabase ("C:PathToExternalDBsomeotherdb.accdb")

完整通用版本:

Set db = DBEngine.Workspaces(0).OpenDatabase("C:PathToExternalDBsomeotherdb.accdb")
因此,如果开发人员

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

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

"CurrentDb 方法创建当前数据库的另一个实例...CurrentDb 方法使您能够从 https://msdn.microsoft.com/en-us/library/office/aa221178%28v=office.11%29.aspx?f=255&MSPPError=-2147217396 创建多个类型为"数据库"的变量,该变量引用当前数据库。
因此,如果您在代码中只使用 CurrentDB 一次,那么不声明它很好,但是多次使用它不会是同一个实例,而是总是创建一个新实例,这可能会为您创建奇怪的错误。

最新更新