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

时间:2015-06-12 18:31:49

标签: vba coding-efficiency

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

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处保存了一行代码。其中,超过数百个潜艇和功能可以真正加起来......

但大多数编码人员更喜欢另一个人?是否有使用其中一个的实际原因?实际定义和拼写整个事情是否有优势?除了不再使用心皮隧道几分钟外,还有什么可以节省的吗?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

在执行方面,两种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命名空间,那么该行代码。

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