Est-il préférable d'utiliser ADO ou DAO dans Access 2007?
Lors de la création d'une nouvelle base de données dans Access 2007, devrait ADO (ActiveX Data Objects) ou DAO (Data Access Objects) être utilisé?
Edit: une Partie de cette base de données importer des données à partir d'Excel 2007 des feuilles de calcul.
Vous devez vous connecter pour publier un commentaire.
[Pour l'enregistrement, le nom officiel de ce qui était autrefois " Jet "est maintenant l'Accès au moteur de base de données'.]
Pour ACE (le Access2007 moteur .format accdb) fonctions qu'il a à être ACEDAO.
Pour Jet 4.0 fonctions qu'il a à être ADO classique.
Pour Jet 3.51 fonctionnalités et versions antérieures, choisissez soit ADO ou DAO. Il y a des avantages et des inconvénients à la fois. La grande majorité des Accès base de données de fonctionnement du moteur est commun aux deux; l'mutuellement exclusifs fonctionnalité est défendable frange. Un choix de vie, peut-être, mais pas une grosse affaire. Le smart codeur utilise le meilleur des deux 🙂
J'ai utilisé à la fois tout à fait un peu et ADO est ma préférence personnelle. Il est plus moderne que la DAO, de sorte que l'architecture c'est une amélioration: flatter modèle d'objet, aucun de l'abattre des problèmes de DAO, etc. Plus de propriétés et de méthodes, et introduit des événements (DAO n'en a pas), par exemple pour la connexion asynchrone et de récupération de documents. Les jeux d'enregistrements ADO peut être déconnecté, hiérarchique et de fabrication, les jeux d'enregistrements DAO ne peut pas. En gros, ils ont pris les bonnes choses de la DAO et fait de leur mieux.
DAO n'est pas sans ses points forts. Pour un, vous trouverez plus de DAO exemples de code que ADO pour Access/Jet.
P. S. pour une raison quelconque, les gens qui aiment DAO n'aime vraiment pas ADO. Ignorer la propagande. ADO n'est pas obsolète. L'AS est un fournisseur OLE DB et est actuellement le seul moyen de l'utilisation de ACE en 64 bits. ADO.NET n'a pas été remplacé ADO classique, pas plus que VB.NET a remplacé VBA6 dans des projets d'Accès.
EDIT: juste pour préciser, "Pour Jet 4.0 fonctions qu'il a à être ADO classique," c'est parce que DAO 3.6 seulement reçu quelques améliorations pour les nouvelles fonctionnalités pour Jet 4.0. Par exemple, pour la
DECIMAL
type de données vous ne pouvez pas spécifier l'échelle/de précision. D'autres fonctionnalités sont manquant complètement de DAO. Par exemple, vous pouvez effectuer les opérations suivantes dans le Jet 4.0 à l'aide de DAO (ou ACEDAO en AS d'ailleurs)?(indice: compressible texte de largeur fixe de la colonne avec le niveau de la table contrainte d'intégrité des données.) Non, vous ne pouvez pas.
Autant que je sache, la seule améliorations à ACEDAO était pour le nouveau ACE fonctionnalité c'est à dire qu'ils n'ont pas revenir en arrière et de remplir le Jet 4.0 lacunes dans DAO. Et pourquoi devraient-ils? Nous avons encore ADO à combler les lacunes. Mieux que l'équipe a consacré de leur temps de manière plus productive, comme la fixation de gênant
DECIMAL
sorte de bug, pour moi, la meilleure chose à propos de ACE 😉DAO est la est la technologie recommandée ici. ADO a beaucoup été dépréciés, et est maintenant remplacé par ADO.net.
N'est pas seulement DAO natif et recommandé de données de modèle d'objet pour l'utilisation de MS access, il continue d'être améliorée et a maintenant tout un tas de nouvelles fonctionnalités de sharepoint. Dans access 2007, nous avons maintenant un Support pour les listes SharePoint. Cela signifie que le nouveau modèle d'objet DAO pour 2007 permet à une liste sharepoint à être utilisé et considéré comme une table SQL server. Cela signifie que vous pouvez utiliser SQL sur des listes sharepoint (en fac il y a même pas un fournisseur oleDB qui vous permet d'utiliser des listes SharePoint de cette façon, mais avec DAO, vous pouvez maintenant le faire). Il n'y a rien de ce genre qui a été ajouté à ADO. Afin de listes SharePoint à partir d'un accès (dao) le point de vue voit ces listes SharePoint comme une table standard.
En outre DAO en outre, l'accès a l'appui de ce que nous appelons des types de données complexes. Cela a été fait à l'appui de XML listes de sharepoint. Gardez à l'esprit pour la prochaine version d'access (2010), nous allons voir tout un tas plus de nouvelles fonctionnalités supplémentaires ajoutées à l'DAO (JET est maintenant appelé ACE).
Donc c'est sans doute que DAO est la bonne et un bon modèle à utiliser. ADO n'est pas recevoir de plus des améliorations, et a été remplacé par ADO.NET.
Si l'avenir appartient à DAO, et il est clair que c'est là que Microsoft investit son argent en termes de MS access et les modalités de la mise à niveau de l'Accès à travailler avec des éléments sharepoint.
Access 2007 reçu multi-valeur les capacités de ses définitions de champ, et encore ce n'était qu'une suite d'améliorations pour soutenir sharepoint. Toutefois, ces fonctionnalités font partie de la JET et ces améliorations peuvent être utilisés sans sharepoint. ils font maintenant partie de DAO.
edit:
Peut-être que je vais développer un peu, et de tenter de clarifier ce que nous avons si opposées réponses ici, je peux vous assurer que lors de l'utilisation d'access 2007, vous êtes beaucoup mieux d'utiliser DAO.
Où la confusion vient de, est que si vous cherchez des outils de références lorsque vous choisissez d'utiliser les données par défaut du modèle d'objet access 2007, le problème ici est qu'il ne s'appelle pas DAO plus. Il est maintenant appelé ACE.
Lorsque vous utilisez DAO dans access 2007, Vous remarquerez dans les outils de référence, la référence n'est pas définie à DAO 3.6 ( cette version a été dépréciés, et qui est maintenant pas partie de MDAC télécharger plus). Vous remarquerez que la nouvelle référence lors de l'utilisation de DAO dans ms-access est appelé:
Microsoft office access 12.0 moteur de base de données de la Bibliothèque d'Objets
Maintenant le dessus est un peu la bouche pleine, mais le dessus est le bon pour référence d'accès à 2007, quand vous allez à l'utilisation de DAO en place d'ADO.
En d'autres termes, nous devrions peut-être appeler cela DAO II.
En d'autres termes, ce moteur de données continue d'être améliorée, et sera très certainement voir une version 64 bits de ce moteur pour office 2010 (office 14).
De sorte que la question ou la confusion des centres autour de ce terme allons les utiliser lorsque nous nous référons à l'aide de DAO dans access 2007. La confusion ici, c'est en fait que la documentation et les outils ->on ne l'appelez pas DAO.
À la fin de la journée dans access 2007, si vous envisagez d'utiliser DAO alors cela signifie que vous définissez la référence ci-dessus, et de ne pas définir une référence à DAO 3.6. Peu importe, il ne fait absolument aucun sens de commencer à utiliser ADO maintenant, quand il a été déprécié, et le nouveau modèle d'objet DAO pour l'accès continue d'être améliorée et investis par Microsoft.
J'espère que cela aide à dissiper la confusion ici. Tout en DAO/JET C'est amorti, la nouvelle version d'access 2007 est basé sur la même base de code, à l'exception il continue d'être amélioré. Ainsi, le nouveau moteur de données dans access peut être considéré et appelé le nouveau modèle d'objet DAO.
Je suis actuellement sous NDA sur cette question, mais je peux certainement vous dire que pour la prochaine version d'office (2010), nous allons voir une flopée d'améliorations de nouveau.
De sorte qu'il est quasi unanime parmi les développeurs Access que lors de l'élaboration d'accéder à des applications et d'utiliser les données natives moteur, le choix fait ici est d'utiliser le modèle d'objet DAO ( mais gardez à l'esprit que nous ne sommes pas appeler ça comme ça, nous l'avons appelé ACE).
La réponse à la question dépend de ce que vous faites. Si vous êtes à l'aide de l'Accès à travailler avec les données dans un format dont les ADO interface est plus polyvalent, puis utiliser ADO. Si vous êtes à l'aide de données Jet, ou en utilisant le moteur de base de données Jet de travailler avec un autre moteur de base de données (via ODBC), puis DAO est le bon choix.
Mais cette réponse suppose que vous travaillez à partir d'Access. Si vous travaillez à partir d'un autre environnement de programmation, les réponses seront probablement complètement différent.
Cela dépend de vos besoins. Aucun de ces outils ne devrait disparaître bientôt.
Si vous n'avez pas d'expérience dans ADO ou DAO, vous trouverez DAO est beaucoup, beaucoup plus facile. Donc, sauf si vous avez besoin d'ADO, DAO.
Vous avez ajouté ce point crucial: "je suis en train d'extraire des données à partir d'une source externe dans un Accès DB." Cette connectivité peut exiger ADO.
ADO est actuellement recommandées méthode d'accès. Je pense que DAO a été supprimée pour un bon nombre d'années.
Ressemble à son été depuis Access 2000 - selon ce lien,
Liste de l'obsolescence des technologies d'accès aux données - http://msdn.microsoft.com/en-us/library/ms810810.aspx#mdac technologies de la feuille de route old_topic9
Citation de l'article ci-dessus, qui a été révisée en Décembre 2008 - "Data Access Objects (DAO): DAO permet d'accéder à JET (Accès) des bases de données. Cette API peut être utilisée à partir de Microsoft Visual Basic, Visual C++, et les langages de script. Il a été inclus avec Microsoft Office 2000 et Office XP. DAO 3.6 est la version finale de cette technologie. Il ne sera pas disponible sur la version 64 bits du système d'exploitation Windows."
DAO juste roches en termes de performance par rapport à l'ADO. Il n'y a pas de comparaison.
Excuses que c'est une réponse, quand il aurait dû être un commentaire (je n'ai pas la rep), mais je voulais effacer une erreur de prétendre que DAO/ACEDAO ne prend pas en charge Jet 4.0 verrouillage d'enregistrement. Il le fait, et c'est le comportement par défaut, indépendamment de ce que certains MS articles de réclamation.
Le problème est que cela peut introduire énorme dilatation (très fragmenté le fichier DB) lorsque vous utilisez DAO modifier/mettre à jour et vous ne pouvez l'éteindre en DAO/ACEDAO.
Si vous avez ce problème, vous pouvez le désactiver via la première ouverture de la base de données via une connexion OLEDB en utilisant le bon Jet OLEDB:Base de données en Mode de Verrouillage des paramètres, ce qui vous permettra de définir la base de données au niveau de la page de blocage. Cette propriété sera alors respecté par conséquent connexions, DAO ou autrement, de sorte que vous pouvez ensuite utiliser DAO pour accélérer les mises à jour etc.
Cela permettra alors de DAO pour revenir à l'habitude 8X performance par rapport à l'exécution des instructions SQL.
Ici sont un couple de liens pointant à la question:
Ne ACEDAO de soutien de verrouillage de niveau ligne?
http://www.access-programmers.co.uk/forums/showthread.php?t=47040
Article base de connaissances microsoft, y compris le code de paramètre de mode de verrouillage avec ADO, puis à l'aide de DAO sur que DB - http://support.microsoft.com/?id=306435