在 Microsoft Access 中,CodeData、CodeProject 和 DAO.. 之间的关系是什么?

In Microsoft Access, what are the relationships between CodeData, CodeProject, and DAO..?

以下几组 Microsoft Access VBA 集合之间有什么区别..?其中一些似乎指向相同的数据和子对象,但通过不同的管道。我认为 DAO 对象是特定于 DBMS 的,但 Access.⃰ Code.⃰ 和 Access.⃰ Project.⃰ 不是,而是通过 Access 连接。还有 ADODB,它完全是另一种野兽。此外,如果没有该类型的子对象,似乎某些集合可能不存在。

鉴于提到 SQL 个功能,似乎有三种情况需要关注,但很难掌握:

  1. 一个独立的 ACCDB 文件。
  2. 具有两个或多个 ACCDB 的拆分数据库 文件。
  3. SQL 服务器的访问前端。

对象集#1:

  1. Access.CodeData.AllTables
  2. Access.CodeData.AllQueries
  3. Access.CodeData.AllFunctions
  4. Access.CodeData.AllDatabaseDiagrams
  5. Access.CodeData.AllStoredProcedures
  6. Access.CodeData.AllViews
  7. Access.CodeProject.AllForms
  8. Access.CodeProject.AllMacros
  9. Access.CodeProject.AllModules
  10. Access.CodeProject.AllReports
  11. 当然还有 CodeData 与 CurrentData 和 CodeProject 与 CurrentProject。

对象集#2:

  1. Access.Application.CodeData.*
  2. Access.Application.CodeProject.*

对象集#3:

  1. Access.Application.CurrentDb.QueryDefs (DAO.QueryDefs)
  2. Access.Application.CurrentDb.Relations (DAO.Relations)
  3. Access.Application.CurrentDb.TableDefs (DAO.TableDefs)

最大的区别在于您正在使用的数据库的类型。标准的 Microsoft Access 数据库 (*.accdb) 将主要使用 CurrentDB/CodeDB 对象来引用数据库对象。

另一方面,ADP 项目 是 SQL 服务器上某些数据(表、查询等...)的混合体通过 CurrentData/CodeData 和驻留在 *.adp 文件中的其他对象(如表单和报告)访问,并通过 CurrentProject/CodeProject.

访问

当涉及多个数据库文件时,CurrentDBCodeDB 之间的区别就会发挥作用,例如作为图书馆数据库引用的其他 Access 数据库。这些库数据库可能具有与父应用程序以及引用该库的其他应用程序交互的功能。

正如您应该已经知道的(因为我告诉过您 ),您可以将代码存储在外部数据库中,并从另一个数据库中引用该代码。

此外部数据库中的代码可能依赖于某些表、查询和表单。但由于它在另一个数据库上 运行,它们可能不是。

这就是CodeDbCodeProjectCodeData的用武之地。它们完全等同于以Current开头的变体,仅引用数据库所在的数据库存储代码,而不是当前打开的数据库。

CurrentDbCurrentProjectCurrentData 之间的差异实际上是在询问苹果、梨和 o运行ges 之间的差异。它们都是对象,但具有不同的功能。正如 ThunderFrame 指出的那样,CurrentDb 主要是 DAO,CurrentProject 包含一些 ADO 功能(主要是连接),但也影响数据库的 VBA 部分,数据库路径,和许多其他功能。 CurrentData 完全是另外一回事。

在 Access 中,CodeDBCurrentDb 函数 return DAO.Database 对象。

CodeDb为数据库插件,其中代码为运行(可能与CurrentDb.

CurrentDb 是当前活动的数据库(不是 加载项)。

Access 2002/03 添加了 ADODB,因此他们为 return 添加了 CurrentProjectCodeProject 函数 CurrentDbCodeDb,但作为 ADO,它们具有非常不同的方法和属性。