我注意到我在互联网上发现的很多代码都会定义和设置变量,我会简单地避免......例如:
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
处保存了一行代码。其中,超过数百个潜艇和功能可以真正加起来......
但大多数编码人员更喜欢另一个人?是否有使用其中一个的实际原因?实际定义和拼写整个事情是否有优势?除了不再使用心皮隧道几分钟外,还有什么可以节省的吗?
答案 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
命名空间,那么该行代码。
这是效率(较少脚本行)和可扩展性(可翻译行)之间权衡决策的一个很好的例子。