使用 Access.Application 对象与使用数据库连接之间的区别

Posted

技术标签:

【中文标题】使用 Access.Application 对象与使用数据库连接之间的区别【英文标题】:Difference between using Access.Application object vs. a database connection 【发布时间】:2012-09-26 14:40:28 【问题描述】:

我一直在寻找有关如何在 Excel VBA 中从 ACCDB 添加和查询数据的信息。我遇到了很多答案:来自我的同事的 OpenDatabase()、数据库连接和使用 Access.Application 对象。我想不通的是,使用 Access 对象而不是使用字符串等创建与数据库的连接是否有好处?我确实读到了使用 Access Application 对象,我不需要在运行 VBA 的计算机上安装 Access 引擎,因此我选择这样做。另外,它看起来比使用连接字符串并走这条路要简单得多。我已经实现了访问对象,它就像一个魅力。所以我的问题是,以访问对象方式与以另一种方式进行比较有什么好处或坏处?谢谢大家!

【问题讨论】:

我会选择 DAO 而不是应用程序对象。使用 MS Access,DAO 的速度要快得多。应用程序对象只是无缘无故地耗尽内存。 DAO 几乎和应用程序对象一样简单。 你的想法有点错误。如果使用连接字符串或 DAO,则不需要完整版的 MS Access,如果使用应用程序对象,则运行的是完整版。当代码设置为在打开应用程序时运行以及仅在安装 MS Access 时运行时,它可能会导致问题。 因此,DAO 比应用程序对象更快、更简单、使用的内存更少,并且不需要应用程序。对象可以使用函数。这是我的任务:我将 CSV(或清理过的 XLSX)文件导入 ACCDB,将单独的数据导入另一个表,查询数据并导出另一个我使用的 XLSX。什么听起来更适合这项任务?数据库现在不是很大,但每周会增加大约 10k 条记录。 我不会将应用程序对象用于这样的事情。 DAO 是一个更好的选择,尽管它们都可以工作。 【参考方案1】:

是 10k 增量添加到 DB 还是您的 CSV 输入增加了 10K?

如果是前者,那么是的,将其存储在数据库中是个好主意,我会使用 DAO 路由。您注意到没有多少人喜欢启动 Access 应用程序,主要是因为您并没有真正使用 Ms Access 功能(它不仅仅是一个数据存储)。

作为替代方案,跳过 Excel 并将宏放入 Access 中,因为您拥有该应用程序。 Access 中有很多好东西可供您利用。

但是,如果您的 CSV 总是满容量,您可能只想在 Excel/VBA 中自己处理数据。我假设“其他”表是参考表。

【讨论】:

以上是关于使用 Access.Application 对象与使用数据库连接之间的区别的主要内容,如果未能解决你的问题,请参考以下文章

使用AHK关闭Access应用程序时未设置对象变量(错误91)

从 vbscript 访问中运行宏和子

Enterprise Library 5 系列之——Data Access Application

从 vb 打开并运行访问宏

使用 OLE 时如何绕过 MS Access 启动?

使用Python创建新的Access数据库和表