Excel - DAO versus ADO in VBA + RDO介绍

本文探讨了在Microsoft Access中使用ADO(ActiveX Data Objects)和DAO(Data Access Objects)的区别。介绍了两种技术的历史背景、适用场景以及如何在Access的不同版本中正确引用它们。对于本地数据库和小型项目推荐使用DAO,而对于大型项目则建议使用ADO。

ActiveX Data Objects vs. Data Access Objects

与ADO相比,DAO与Access(JET engine environment)数据库的集成度更高,是为了Access所开发的,比ADO要老,所以如果你在Access内部工作,使用DAO会更容易,性能也可能会更好。但是ADO也很好用,在与其他外部数据源一起工作时,它具有优势。

DAO is more integrated with Access than ADO, so if you work within Access itself, it is easier to use DAO, and performance will probably be better too. But ADO also works well, and it offers advantages when working with external data sources.

本地数据库和小型项目应该使用DAO,而大型项目应该使用ADO。这样做的原因是,开发人员一般希望尽可能地保持简单。ADO对外部(远程)连接非常有效,而DAO则适合于操作本地对象。

在这片文章中,微软声明DAO为即将废弃的技术:

Driver history for Microsoft SQL Server - SQL Server | Microsoft Docs

但这篇2002年的文章有误导性,并已过时。当时,微软正计划逐步淘汰DAO,倾向于使用ADO。在Access 2000和2002中,新的数据库里并没有引用DAO库。但微软后来改变了主意,在Access 2003及以后的版本中,DAO再次成为默认的数据对象库。 在Access 2007及以后的版本,开发了一个全新的版本(Microsoft Office Access数据库引擎对象库,仍然缩写为DAO / the Microsoft Office Access database engine Object Library, still abbreviated as DAO)。DAO应该被认为是现在Access数据库访问的首选方法。

虽然ADO仍然可以在Access数据库中引用,但并不会继续优化。 要在VBA编辑器中使用ADO功能,要添加ADO库的引用:

在Tools -> References里,找到Microsoft ActivX Data Objects x.x Library,选择一个相应版本即可。

关于DAO的使用介绍可以看看:

Microsoft Access tips: DAO Object Model

DAO的新开发版本,实际叫做ACE。在Access中,由ACE替换了DAO。在Access 2007及以后版本中,不需要添加DAO库的引用,因为其已经内置到ACE中。

比如在Access 2010里,显示的引用为:

[√] Microsoft Office 14.0 Access database engine Object。

这个ACE库引用是默认选中的,但如果在Excel中打开VBA,要是用DAO库,就要手动勾选这个库引用。

比如在我的2022年的Office 365 Excel, VBA 版本7.1中,显示的就是: Microsoft Office 16.0 Access Database Engine Object Library.

而以前的库,Microsoft DAO 3.6 Object Library,如果是Access 2007以前的版本,就要勾选。

关于添加ADO或DAO库的引用的说明(Access和Excel中的VBA里的library reference)

库是提供功能的组件。安装或卸载任何软件都可能覆盖、删除或取消注册库。那么像Date()或Trim()这样的简单函数就不能工作了。

要查看Access项目引用了哪些库,可以打开任何代码窗口(如按Ctrl+G),并从工具菜单中选择引用。

Libraries are components that provide functionality. Installing or uninstalling any software may overwrite, remove, or de-register libraries. Then simple functions like Date() or Trim() don't work.

To see what libraries an Access project has referenced, open any code window (e.g. press Ctrl+G), and choose References from the Tools menu.

如果一个库被标记为MISSING,请点击浏览按钮,并找到该库的正确文件。

If a library is marked MISSING, click the Browse button, and locate the correct file for the library.

如果该库甚至没有显示,你可能需要重新注册它。点击Windows开始按钮,选择运行。输入regsvr32和库文件的完整路径。如果文件名中含有空格,则包括引号,例如:

If the library is not even shown, you may need to re-register it. Click the Windows Start button, and choose Run. Enter regsvr32 followed by the full path of the library file. Include quotes if the file name contains spaces, e.g.:

   regsvr32 "c:\program files\common files\microsoft shared\dao\dao360.dll"

偶尔,直到你取消注册库并重新注册,问题才会得到解决。在Access中取消对丢失的库的勾选。关闭Access。发出这个命令,然后再发出上

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夜流冰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值