以下几组Microsoft Access VBA集合之间有什么区别?其中一些似乎指向相同的数据和儿童物品,但通过不同的管道。我认为DAO对象是特定于DBMS的,但Access.⃰Code.⃰和Access.⃰Project.⃰不是,并通过Access连接。有ADODB,完全是另一个野兽。此外,如果没有该类型的子对象,似乎某些集合可能不存在。
鉴于SQL功能的提及,似乎有三种情况需要关注,但很难掌握:
对象集#1:
对象集#2:
对象集#3:
答案 0 :(得分:2)
最大的区别在于您正在使用的数据库的 类型 。标准的 Microsoft Access数据库(* .accdb)将主要使用CurrentDB
/ CodeDB
对象来引用数据库对象。
另一方面, ADP项目与通过CurrentData
/ {访问的SQL服务器(表,查询等)上的一些数据混合在一起。 {1}}以及其他对象,例如位于* .adp文件中并通过CodeData
/ CurrentProject
访问的表单和报告。
当您涉及多个数据库文件时,CodeProject
和CurrentDB
之间的区别就会发挥作用,例如引用为库数据库的其他Access数据库。这些库数据库可能具有与父应用程序交互的功能,以及引用该库的其他库。
答案 1 :(得分:2)
正如您应该已经知道的那样(因为我告诉您here),您可以将代码存储在外部数据库中,并从另一个数据库中引用该代码。
此外部数据库中的代码可能依赖于某些表,查询和表单。但是因为它是在另一个数据库上运行的,所以它们可能不是。
这就是CodeDb
,CodeProject
和CodeData
进来的地方。它们完全等同于以Current
开头的变体,仅指代代码所在的数据库存储,而不是当前打开的数据库。
CurrentDb
,CurrentProject
和CurrentData
之间的差异确实要求苹果,梨和橘子之间存在差异。它们都是对象,但履行不同的功能。正如ThunderFrame所指出的,CurrentDb
主要是DAO,CurrentProject
包含一些ADO功能(主要只是连接),但也有影响数据库的VBA部分,数据库路径和许多其他功能的功能。 CurrentData
完全是另一回事。
答案 2 :(得分:2)
在Access中,CodeDB
和CurrentDb
函数返回DAO.Database
个对象。
CodeDb
是数据库或加载项,代码正在其中运行(可能与CurrentDb
不同。
CurrentDb
是当前有效的数据库(不是加载项)。
Access 2002/03添加了ADODB
,因此他们添加了CurrentProject
和CodeProject
函数,用于返回CurrentDb
和CodeDb
的ADO等值,但是ADO,它们有非常不同的方法和属性。