IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Affichage des résultats du sondage: Quel objet de manipulation de données utilisez-vous, et sur quelle version d'Access?

Votants
37. Vous ne pouvez pas participer à ce sondage.
  • DAO - Access 2000 à 2003

    13 35,14%
  • DAO - Access 2007 (ou ACEDAO)

    15 40,54%
  • ADO - Access 2000 à 2003

    3 8,11%
  • ADO - Access 2007

    6 16,22%
Sondages et Débats Discussion :

DAO vs. ADO : l'éternelle question!


Sujet :

Sondages et Débats

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2009
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 20
    Points : 19
    Points
    19
    Par défaut DAO vs. ADO : l'éternelle question!
    Voici ma petite histoire, pour vous mettre en contexte. Vous pouvez sauter à la question du bas si ma biographie ne vous intéresse pas!

    Quel objet est le meilleur? Je ne suis pas le premier à me poser cette question, et je ne serai certainement pas le dernier! Comme tous les débutants, j'ai commencé avec DAO. Déjà là, je trouvais que la marche entre les formulaires liés à une table ou une requête et ceux liés à un Recordset était très haute! J'ai eu quelques problèmes avec DAO, mais, après coup, je réalise que les problèmes venaient davantage de moi que de l'objet!

    J'ai par la suite découvert ADO. À première vue, ce que les gens semblaient dire c'est que c'était plus "souple, stable et rapide" que DAO. J'ai donc changé tous les objets DAO de mon programme pour des objets ADODB. Le code est plus long et plus complexe, mais, si je devais gagner en performance, ça valait le coup!

    Au fur et à mesure que j'améliorais mes compétences et que mon programme augmentait en complexité, j'ai commencé à lier certains formulaires entièrement sur des Recordsets. J'ai surmonté certains problèmes, mais il y en a encore que j'ai peine à résoudre de façon "propre". Avant d'aller plus loin dans la résolution de mes problèmes, je voulais faire un choix (quasi) définitif: ADO ou DAO? Si cet article que j'ai trouvé, qui remonte à 2006, dit vrai, je crois que je serais mieux avec DAO. Par contre, je voulais avoir l'opinion de VRAIS utilisateurs et pas seulement des avantages/désavantages théoriques. Ce qui m'amène à ma vraie question:

    Qu'est-ce que VOUS utilisez comme objet de manipulation de données dans vos projets?

    Voici les détails de mon projet à moi:

    - Access 2002 sous Windows XP (environnement gouvernemental, je n'ai pas le choix!)
    - "Front-end" Access utilisé par des utilisateurs sur 3 serveurs différents qui se connectent à une base Access sur un de ces serveurs. Certaines tables sont locales, d'autres sont liées à la base du serveur, d'où mon besoin de gérer 2 connexions différentes.
    - La base pourrait éventuellement être transférée sur un serveur SQL Server, mais rien n'est décidé.
    - Mon besoin principal est d'augmenter la rapidité pour les usagers qui se trouvent sur les 2 autres serveurs.

    Vous pouvez m'aider simplement en votant, mais vous pouvez aussi commenter votre réponse!

  2. #2
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Bonsoir,

    J'utilise de préférence DAO pour manipuler des données ou des objets Access.
    Plus facile à utiliser, à mon sens, car dédié au moteur de base de données d'Access (Jet).

    J'utilise ADO pour ce qui n'est pas Jet (SQL Server, Oracle).

    Cordialement.

  3. #3
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 586
    Points : 34 255
    Points
    34 255
    Par défaut
    Salut,
    j'ai commencé avec DAO, et j'essaie de basculer progressivement vers ADO.
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  4. #4
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Bonjour

    La cible de DAO c'est le moteur de base de données JET ... sur lequel repose Access. ADO a été conçu pour pallier au manque de RDO (apparu avec VB5.0) et qui était déjà dans une optique Client - Serveur (Remote Data Object).

    DAO reste encore aujourd'hui le meilleur choix pour une base de données Full Access (et non un projet adp où ADO est le mieux placé car avant tout destiné pour SQL Server ... sur lequel repose ADP).

    Pour preuve que DAO a encore de beaux jours devant lui : il est repris dans la bilbilothèque Access Data Object Library depuis Access 2007 pour traiter les bases de données du moteur ACE (remplaçant de JET). Il intègre en outre les nouveaux champs Pièce Jointes et les champs à valeurs multiples.

    Quant à Access 2010, là encore DAO gère très bien les nouveautés puisque par exemple, il est possible de créer en VBA des champs calculés.


  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour
    J'utilise Dao pour le applis purement Access (car je trouve que c'est plus facile) et Ado pour se connecter à des bases externes (As400 entre autre).

  6. #6
    Membre à l'essai
    Inscrit en
    Février 2009
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 20
    Points : 19
    Points
    19
    Par défaut
    Eh bien! Je vois que DAO est très apprécié! En effet, après avoir changé mes objets de Recordset (encore une fois), je constate en effet que DAO est un peu plus simple et rapide que ADO. Il cause aussi beaucoup moins de problèmes si le code plante ou si on l'interrompt avant d'avoir fermé la connexion!

    Malgré tout, je suis content d'avoir pu expérimenter ADO. Ça va me faire une bonne base si jamais j'ai un jour à migrer vers d'autres bases de données.

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2012
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2012
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Je préfère ADO !
    Bonjour à tous,
    je suis surpris de vous entendre dire qu'ado est plus difficile que DAO !!
    En fait, c'est pratiquement la même chose question programmation !
    De plus ADO fonctionne parfaitement et est trés rapide. Ce sont les recordset qui sont extèmement lent. Mais le execute de la connection ADO est d'une précision hors du commun.
    Que ce soit access, SQL server, Oracle ou Sybase, rien de plus facile avec ADO !!

  8. #8
    Membre expert
    Avatar de alassanediakite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Mali

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 1 599
    Points : 3 590
    Points
    3 590
    Billets dans le blog
    8
    Par défaut pas de préférence, juste que ça marche
    Salut
    J'ai vraiment pas de préférence.
    J'essaye avec DAO, cela ne marche pas alors j'essaye ADO.
    Par exemple, je voulais récupérer un recordset en source d'une zone de liste à plusieurs colonne:
    ->avec DAO j'ai été obligé de parcourir le recordset pour construire la chaine
    ->avec ADO on utilise tostring.
    @+
    Le monde est trop bien programmé pour être l’œuvre du hasard…
    Mon produit pour la gestion d'école: www.logicoles.com

  9. #9
    Expert éminent
    Avatar de jimbolion
    Homme Profil pro
    Moulticien
    Inscrit en
    Janvier 2013
    Messages
    3 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Moulticien
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3 150
    Points : 7 001
    Points
    7 001
    Billets dans le blog
    2
    Par défaut ADO vs DAO
    Bonjour,

    Personnellement je n'ai pas de préférences. J'aurai plutôt tendance à utiliser DAO suite aux migrations successives d'une appli access 97 vers 2010. Pour les composants externes dont la majeure partie sont écrites en VB6 j'utilise ADO suite à des problèmes de communication lorsque le composant est appelé à partir de la commande shellExecute !

    JimBoLion
    N'oubliez pas le Tag si la réponse donnée vous a été utile et pour une réponse pertinente.
    Retrouvez-moi sur le chat en salon base de données

  10. #10
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Citation Envoyé par ainasarn Voir le message
    Mais le execute de la connection ADO est d'une précision hors du commun.
    !!
    Qu'est ce donc que la précision dans ce cas présent ? On pourrait croire que vous sous entendez qu'un ordre DML de modification du client n°2 modifierait de temps en temps le client n°3 avec DAO ...

    DAO est plus simple avec Jet car son modèle objet a été conçu pour les objets existants de JET. Une table (Table) est un TableDef, une requête (Query) est un queryDef. Sous ADO, quid des objets Procedure et View avec Access ? L'ouverture des recordset est aussi plus facile puisqu'il n'y a pas besoin de définir la "Location" du curseur et il y a beaucoup moins de pièges à éviter.

    De plus, en une seule référence DAO combine à la fois : la structure de la base, ses données et la gestion des utilisateurs, quand sous ADO, il est nécessaire de manipuler 3 références différentes.

    Ce sont les recordset qui sont extèmement lent
    Sur une application liée à une base de données, la lecture la recherche et le tri des données représente une part majoritaire des temps d'utilisation. Combien d'enregistrements lus pour un seul de modifier ? Utiliser des recordset lent est bien plus que dommageable.

    Par exemple, je voulais récupérer un recordset en source d'une zone de liste à plusieurs colonne:
    Pourquoi ne pas affecter directement le recordset DAO à la zone de liste ?

    Le modèle DAO est peut-être agé mais il prend seul en charge les nouveautés apportés par 2007 et ultérieurs.

  11. #11
    Membre expert
    Avatar de alassanediakite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Mali

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 1 599
    Points : 3 590
    Points
    3 590
    Billets dans le blog
    8
    Par défaut
    Salut
    Comment?
    Citation Envoyé par Tofalu Voir le message
    Pourquoi ne pas affecter directement le recordset DAO à la zone de liste ?
    Merci d'avance.
    @+
    Le monde est trop bien programmé pour être l’œuvre du hasard…
    Mon produit pour la gestion d'école: www.logicoles.com

  12. #12
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim oDb As DAO.Database
    Dim oRst As DAO.Recordset
    Set oDb = CurrentDb
    Set oRst = oDb.OpenRecordset("MaTable", dbOpenDynaset)
     
    Set Liste0.Recordset = oRst

  13. #13
    Membre expert
    Avatar de alassanediakite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Mali

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 1 599
    Points : 3 590
    Points
    3 590
    Billets dans le blog
    8
    Par défaut
    Salut
    Merci de la réponse
    je vois dans beaucoup de codes...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim oDb As DAO.Database
    Set oDb = CurrentDb
    Set XXX = oDb.YYY
    Pourquoi ne pas faire directement...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set XXX = CurrentDb.YYY
    @+
    Le monde est trop bien programmé pour être l’œuvre du hasard…
    Mon produit pour la gestion d'école: www.logicoles.com

  14. #14
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Comme expliqué ici :

    http://warin.developpez.com/access/d...tie_3#L3.3.1.1

    Cette méthode fournie par l'objet Access.Application retourne une variable de type Database correspondant à la base de données actuellement ouverte dans le logiciel Microsoft Access. La méthode Currentdb crée une nouvelle instance de la base de données à chaque appel. Aussi, vous devez récupérer son résultat dans une variable objet de type Database pour pouvoir l'exploiter.
    Lorsqu'il y a qu'un seul appel, cela ne pose pas de problème mais c'est une bonne habitude à prendre

Discussions similaires

  1. [DATA]DAO ou ADO
    Par DelphiManiac dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 11/10/2006, 14h41
  2. Utiliser DAO ou ADO
    Par croko dans le forum VBA Access
    Réponses: 1
    Dernier message: 26/09/2006, 09h03
  3. [Débutante] DAO ou ADO ?
    Par nath-0-0 dans le forum VBA Access
    Réponses: 4
    Dernier message: 05/09/2006, 16h20
  4. Difference entre DAO et ADO
    Par Pe04 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 09/01/2006, 13h34
  5. DAO et ADO?
    Par chetflo dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 09/12/2005, 17h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo