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

时间:2017-12-08 21:21:49

标签: vba ms-access access-vba ms-access-2007

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

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

  1. 独立的ACCDB文件。
  2. 具有两个或更多ACCDB的拆分数据库 文件。
  3. 访问SQL服务器的前端。
  4. 对象集#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。
    12. 对象集#2:

      1. Access.Application.CodeData。*
      2. Access.Application.CodeProject。*
      3. 对象集#3:

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

3 个答案:

答案 0 :(得分:2)

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

另一方面, ADP项目与通过CurrentData / {访问的SQL服务器(表,查询等)上的一些数据混合在一起。 {1}}以及其他对象,例如位于* .adp文件中并通过CodeData / CurrentProject访问的表单和报告。

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

答案 1 :(得分:2)

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

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

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

CurrentDbCurrentProjectCurrentData之间的差异确实要求苹果,梨和橘子之间存在差异。它们都是对象,但履行不同的功能。正如ThunderFrame所指出的,CurrentDb主要是DAO,CurrentProject包含一些ADO功能(主要只是连接),但也有影响数据库的VBA部分,数据库路径和许多其他功能的功能。 CurrentData完全是另一回事。

答案 2 :(得分:2)

在Access中,CodeDBCurrentDb函数返回DAO.Database个对象。

CodeDb是数据库加载项,代码正在其中运行(可能与CurrentDb不同。

CurrentDb是当前有效的数据库(不是加载项)。

Access 2002/03添加了ADODB,因此他们添加了CurrentProjectCodeProject函数,用于返回CurrentDbCodeDb的ADO等值,但是ADO,它们有非常不同的方法和属性。