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

VBA Access Discussion :

Méthode Exécution requête Insert


Sujet :

VBA Access

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Février 2018
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Février 2018
    Messages : 10
    Points : 5
    Points
    5
    Par défaut Méthode Exécution requête Insert
    Bonjour à tous,

    Actuellement dans l’écriture d’un code VBA dans Access, je souhaiterai éclairer ma lanterne avant d’aller plus en avant sur les méthodes à employer pour exécuter une requête stockée de type ajout (insert).

    Quelle méthode est la plus approprié (en 2018) pour effectuer une telle action :

    - Access : Docmd.OpenQuery
    - DAO : querydef.Execute
    - ADO : Connection.Execute
    - ADO : Connection.Command
    - Autre : ….

    Après avoir lu les articles suivants :

    - Définition et manipulation de données avec DAO
    - Comprendre les Recordset ADO

    J’avoue être un peu désorienté sur la bonne direction à suivre et à apprendre.

    Si vous aviez quelles arguments pour me permettre de faire ce choix Cornélien.

  2. #2
    Membre émérite Avatar de Zekraoui_Jakani
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    1 670
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 670
    Points : 2 489
    Points
    2 489
    Par défaut
    Il fallait tester au moins l'une des solutions. Le plus simple est 'Docmd.OpenQuery "QueryName"', ça ne demande qu'une ligne de code en principe.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Février 2018
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Février 2018
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par Zekraoui_Jakani Voir le message
    Il fallait tester au moins l'une des solutions. Le plus simple est 'Docmd.OpenQuery "QueryName"', ça ne demande qu'une ligne de code en principe.
    Bonjour,

    Merci pour ton retour Zekraoui.

    J'ai en effet utilisé la classe Docmd qui est la plus simple à mettre en œuvre pour l’exécution des requêtes stockés

    En parallèle j'ai pu utilisé les autres classes pour la gestion des recordset en DAO puis ADO sur d'autre parties de mon code.

    Mais comme je n'arrivais à aboutir avec la classe ADO (je crois que j'ai mal comprit la différence entre les deux méthodes Connection.Command et Connection.Execute avec les requêtes stockées).

    Je voulais savoir quel intérêt j'avais de persévérer ou pas (avec l'ensemble des tutos, le newbie que je suis distingue mal vers quel méthode il faut s'investir). Du coup j'ai ma réponse... je fais au plus simple

    Encore Merci.

  4. #4
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 087
    Points : 5 203
    Points
    5 203
    Par défaut
    Bonjour,

    ADO est à privilégier si tu envisages à terme d'utiliser des bases autres qu'access (MSQL, Oracle...)

    Sinon DAO convient très bien, par contre il est bien plus facile de maintenir le code si les requetes sont écrites dans le VBA :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    currentDB.Execute "INSERT INTO ...", dbFailOnError
    Enfin la syntaxe ci-dessus a l'énorme avantage de renvoyer un code d'erreur précis dans err.Number (et sa description dans err.description) ce qui facilite énormément le débugage
    Utilisez Planet, gestion d'entreprise gratuite pour TPE / PME

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonsoir,
    perso je préfère ADO, mais i est vrai que je me balade de type de base en type de basse.

    en revanche Access dispose de tout ça en natif {DAO} faut pas s'en priver.

    DAO est le moteur de base de données Microsoft.

    ADO est un DRIVER de base de données universel.

    l’avantage que peut apporter l'un peut être un inconvénient chez l'autre et réciproquement.

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Février 2018
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Février 2018
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Bonjour,

    Merci pour vos retours éclairer.

    Au gré de mes investigations, j'ai pu voir plus clair avec l'article suivant :

    Choosing ADO or DAO for Working with Access Databases

    Voilà donc si j'ai bien tout comprit en bref :

    Il est préférable d'utiliser ADO qui est l’hérité de DAO. Surtout si l'on souhaite travailler avec des données en dehors du moteur Jet d'access.

    Sachant que certaines fonctions ont été implémentés dans une référence a part (ADOX). Il n'est pas possible de récupérer des données d'un objet recordset vers l'autre.

    Si un habitué des classes ADO à le courage de poser le code pour utiliser une requête stockée d'ajout pour compléter l'article .

    Pour ma part, j'ai pu résoudre mon besoin par la simplicité du DoCmd pour une requête ajout.

    Encore merci à tous les participants

Discussions similaires

  1. [MySQL] Requête INSERT qui s'exécute 3 fois au lieu d'une
    Par Marc22 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 11/03/2011, 00h05
  2. Exécuter requête insertion Java
    Par alfred5 dans le forum NetBeans
    Réponses: 20
    Dernier message: 16/01/2011, 16h27
  3. [AC-2003] Exécuter requête insert into en vb
    Par souketou dans le forum VBA Access
    Réponses: 4
    Dernier message: 18/05/2009, 11h37
  4. Temps exécution requête d'insertion très long
    Par delphine93 dans le forum SQL
    Réponses: 9
    Dernier message: 12/12/2008, 17h41
  5. [Débutant] Requête Insert ou Update exécutée par l’objet ADO
    Par lazerdev dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 11/05/2007, 10h52

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