Différence entre ADO et DAO

Ce n'est pas une question à propos de ce qui est mieux, mais plutôt une question au sujet de pourquoi ils diffèrent fonctionnellement. Le problème que j'était en cours d'exécution en a été traitée, mais je suis curieux de savoir pourquoi ce comportement qui se passe.

De fond - à l'aide de vba Excel pour extraire des données à partir d'une base de données Access. Lorsque l'utilisateur clique sur un bouton, un jeu d'enregistrements est tiré de l'Accès, et il remplit diverses données de la feuille de calcul. Ensuite, un autre jeu d'enregistrements est tiré à partir d'une autre requête pour remplir une autre partie de la feuille de calcul.

Quel ADO - ADO fonctionne très bien pour mon premier jeu d'enregistrements. Cependant, mon deuxième jeu d'enregistrements va à la requête dans Access, les courses, et ne retourne aucune ligne. Si j'exécute cette requête dans Access, il ne s'ouvrir (après environ 3 à 4 secondes). Cette requête a plusieurs jointures, calculée articles, des limites, et, éventuellement, de l'Union des requêtes (je l'ai essayé beaucoup de différentes manières, avec ou sans union,etc.). J'ai essayé de fermer et de rouvrir la connexion ado. J'ai tenté de changer les valeurs de délai d'attente, et j'ai même testé à l'aide d'un ADO de commande pour Faire exécuter les requêtes de table pour ce type de données, puis tirez-le à partir de la table à la place (cela a fonctionné par le chemin, mais n'est pas le meilleur des cas, car les données changent continuellement, et je ne veux pas avoir à exécuter la requête création de table à chaque fois que quelqu'un utilise cet outil).

Ainsi, j'ai changé le second données tirez-le pour le DAO, et voilà, ça fonctionne. Les premières données de traction est encore ADO (qui en général, je préfère utiliser), mais je suis maintenant étudier la possibilité de modifier à DAO, parce que je préfère avoir une méthode d'accès aux données dans le code.

Donc, quelqu'un peut m'expliquer pourquoi ADO ne tirez pas les données dans un seul cas, mais DAO? Encore une fois, c'est purement à titre informatif.

source d'informationauteur APrough