excel - ADO 和 DAO 的区别

标签 excel ms-access vba ado dao

这不是一个更好的问题,而是一个关于为什么它们在功能上不同的问题。我遇到的问题已得到解决,但我很好奇为什么会发生这种行为。

背景 - 使用 Excel vba 从 Access 数据库中提取数据。当用户单击按钮时,将从 Access 中提取记录集,并将各种数据填充到电子表格中。然后,从不同的查询中提取另一个记录集以填充电子表格的另一部分。

ADO 的作用 - ADO 对于我的第一个记录集非常有用。但是,我的第二个记录集转到 Access 中的查询,运行并没有返回任何行。如果我在 Access 中运行此查询,它会打开(大约 3 到 4 秒后)。这个查询有多个连接、计算项、限制,可能还有联合查询(我尝试了很多不同的方式,有/没有联合等)。我尝试关闭并重新打开 ado 连接。我尝试更改超时值,甚至使用 ADO 命令进行测试来运行此数据的表查询,然后从表中提取数据(顺便说一下,这可行,但不是最好的情况,因为数据不断变化,并且我不想每次有人使用此工具时都必须运行 make table 查询)。

所以,我将第二个数据拉取更改为 DAO,你瞧,它有效了。第一个数据拉取仍然是 ADO(我通常更喜欢使用它),但现在正在考虑将其更改为 DAO,因为我宁愿在代码中使用一种数据 Access 方法。

那么,有人可以向我解释为什么 ADO 在一种情况下不会提取数据,但 DAO 会吗?再次强调,这纯粹是为了提供信息。

最佳答案

DAO 是 Jet (Ms-Access) 数据表的 native 数据 Access 方法。 ADO“Active X 数据对象”是与几乎所有类型数据库的行业友好连接。

对于标准查询,在这种情况下,ADO 没有理由像 DAO 那样返回任何记录,我怀疑查询还必须包含与 Access 数据库中的项目相关的参数。如果是这种情况,那么 ADO 将无法工作,因为它无法选择使用所述参数,因为它只是对 Excel 的外部引用,使用 DAO 方法将触发 Access 运行查询而不是 Excel,因此它将能够 Access 它自己的参数/引用。

关于excel - ADO 和 DAO 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9737099/

相关文章:

java - 如何使用 apache-poi 处理空单元格

ms-access - 如何自动更新 MS-Access 2007 应用程序

vb.net - 从 Excel 工作簿获取ActiveObject

excel - 多个对象的类似语法

sql-server - 如何实现高性能 Excel VSTO 到 SQL Server?

excel - 如果以编程方式触发 Close,为什么 VBA Workbook.Close 语句在 Workbook_BeforeClose 内失败?

arrays - 使用 VBA 中的默认值数组使用大纲填充 Excel WBS

vba - ".MoveSize"或 ".Move"用于弹出表单定位

ms-access - 将整个 MS Access 数据库导出为 CSV

vba - 枢轴和运行时错误 1004 : Application-defined or object-defined error