这不是一个关于哪个更好的问题,而是一个关于它们在功能上为什么不同的问题。我遇到的问题已经解决了,但我很好奇为什么会发生这种情况。
背景 - 使用Excel vba从Access数据库中提取数据。当用户点击按钮时,会从Access获取记录集,并将各种数据填充到电子表格中。然后,从另一个查询中获取另一个记录集以填充电子表格的另一部分。
ADO的作用 - ADO非常适合我的第一个记录集。但是,我的第二个记录集进入Access中的查询,运行并返回零行。如果我在Access中运行此查询,它确实会打开(大约需要3到4秒钟)。此查询具有多个连接、计算项、限制和可能的Union查询(我尝试了许多不同的方式,包括/不包括union等)。我尝试关闭并重新打开ado连接。我尝试更改超时值,甚至测试使用ADO命令运行“制表”查询,然后从表中提取数据(顺便说一下,这样做是有效的,但不是最佳方案,因为数据不断变化,我不想每次有人使用此工具时都运行制表查询)。
所以,我将第二个数据提取更改为DAO,结果它有效了。第一个数据提取仍然是ADO(我通常更喜欢使用它),但现在考虑将其更改为DAO,因为我宁愿在代码中只使用一种数据访问方法。
那么,有人能够向我解释为什么在某些情况下ADO无法提取数据,而DAO可以吗?再次强调,这纯粹是为了信息目的。
背景 - 使用Excel vba从Access数据库中提取数据。当用户点击按钮时,会从Access获取记录集,并将各种数据填充到电子表格中。然后,从另一个查询中获取另一个记录集以填充电子表格的另一部分。
ADO的作用 - ADO非常适合我的第一个记录集。但是,我的第二个记录集进入Access中的查询,运行并返回零行。如果我在Access中运行此查询,它确实会打开(大约需要3到4秒钟)。此查询具有多个连接、计算项、限制和可能的Union查询(我尝试了许多不同的方式,包括/不包括union等)。我尝试关闭并重新打开ado连接。我尝试更改超时值,甚至测试使用ADO命令运行“制表”查询,然后从表中提取数据(顺便说一下,这样做是有效的,但不是最佳方案,因为数据不断变化,我不想每次有人使用此工具时都运行制表查询)。
所以,我将第二个数据提取更改为DAO,结果它有效了。第一个数据提取仍然是ADO(我通常更喜欢使用它),但现在考虑将其更改为DAO,因为我宁愿在代码中只使用一种数据访问方法。
那么,有人能够向我解释为什么在某些情况下ADO无法提取数据,而DAO可以吗?再次强调,这纯粹是为了信息目的。