这不是一个关于哪个更好的问题,而是关于它们为什么在功能上有所不同的问题。我遇到的问题已经解决,但我很好奇为什么会发生这种行为。ADO和DAO之间的区别
背景 - 使用Excel vba从Access数据库中提取数据。当用户单击一个按钮时,一个记录集将从Access中提取出来,并将各种数据填充到电子表格中。然后,从另一个查询中提取另一个记录集以填充电子表格的另一部分。
ADO做了什么 - ADO非常适合我的第一个记录集。但是,我的第二个记录集转到Access中的查询中,运行,并且不返回任何行。如果我在Access中运行这个查询,它会打开(大约3到4秒后)。这个查询有多个连接,计算项目,限制和可能的联合查询(我尝试了许多不同的方式,有/没有联合等)。我尝试关闭并重新打开ado连接。我试着改变超时值,我甚至使用ADO命令测试了对这些数据的Make表查询,然后从表中取出(这种方式有效,但不是最好的情况,因为数据不断变化,而且我不希望每次有人使用此工具时都要运行make table查询)。
所以,我改变了第二个数据拉到DAO,你看,它的工作原理。第一个数据是ADO(我通常更喜欢使用),但现在考虑将其更改为DAO,因为我宁愿在代码中使用一种数据访问方法。
那么,有人可以向我解释为什么ADO不会在一个情况下拉数据,但DAO会?再次,这纯粹是为了信息的目的。
在看不到代码的情况下很难评论,但它可能是cusrsor类型/记录集类型问题。你是否依赖代码中的默认值?如果您只使用Access,那么DAO是一个更好的选择,因为它是Access原生的,并提供比ADO更多的控制 – SWa 2012-03-16 12:31:11
在哪里使用通配符?这是一个常见问题,对于ADO而言,通配符是%,而DAO是(通常)*。 – Fionnuala 2012-03-16 13:49:17
@Remou,我很熟悉两者之间通配符的区别,但不幸的是我不在查询中使用它们。 – APrough 2012-03-16 14:33:32