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 :

[VBA]exécution requete ajout


Sujet :

VBA Access

  1. #1
    Membre confirmé Avatar de fbu78
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 124
    Par défaut [VBA]exécution requete ajout
    Voici mon problème :

    J'ai des requêtes AJOUT qui fonctionnent très bien lorsqu'elles sont exécutées à partir du mode création, mais elles refusent obstinément d'ajouter quoi que ce soit lorsque je clique sur le bouton qui doit les lancer. Voici le code derriere le bouton :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    DoCmd.SetWarnings False
    DoCmd.OpenQuery "R_SUPP_CCXCHQPROD", acViewNormal, acEdit
    DoCmd.OpenQuery "R_SUPP_CCXCESU", acViewNormal, acEdit
     
    DoCmd.OpenQuery "R_SUPP_CCXCHQPROD-->T_CCXFORCE", acViewNormal, acEdit
    DoCmd.OpenQuery "R_SUPP_CESU-->T_CCXFORCE", acViewNormal, acEdit
    Si quelqu'un a une idée, elle sera la bienvenue !

    Merci d'avance

  2. #2
    Membre Expert
    Inscrit en
    Août 2006
    Messages
    1 588
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 1 588
    Par défaut
    Et ceci ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    DoCmd.SetWarnings False
    DoCmd.OpenQuery "R_SUPP_CCXCHQPROD", , acAdd
    DoCmd.OpenQuery "R_SUPP_CCXCESU", , acAdd
     
    DoCmd.OpenQuery "R_SUPP_CCXCHQPROD-->T_CCXFORCE", , acAdd
    DoCmd.OpenQuery "R_SUPP_CESU-->T_CCXFORCE", , acAdd
    ou simplement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    DoCmd.SetWarnings False
    DoCmd.OpenQuery "R_SUPP_CCXCHQPROD"
    DoCmd.OpenQuery "R_SUPP_CCXCESU"
     
    DoCmd.OpenQuery "R_SUPP_CCXCHQPROD-->T_CCXFORCE"
    DoCmd.OpenQuery "R_SUPP_CESU-->T_CCXFORCE"

  3. #3
    Membre confirmé Avatar de fbu78
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 124
    Par défaut
    j'ai déjà essayé ces 2 options, rien n'y fait...je ne comprend pas pourquoi
    j'ai même refais ces requêtes, en les nommant autrement et toujours rien !

    Merci pour vos idées...je reste preneur !

    a+

  4. #4
    Membre Expert
    Avatar de mout1234
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 2 210
    Par défaut
    Essayes avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Currentdb.Execute "R_SUPP_CCXCHQPROD",dbFailOnError

  5. #5
    Membre confirmé Avatar de fbu78
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 124
    Par défaut
    merci ça fonctionne comme ça, mais je ne comprend pas pourquoi !

    Merci encore

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Pourquoi ?

    OpenQuery ouvre une requête mais ne l'exécute pas, c'est surtout utile pour les requêtes de sélection. Hors une requête action doit étre executée :

    Starec

  7. #7
    Membre à l'essai
    Homme Profil pro
    Responsable d'un système d'information métier
    Inscrit en
    Décembre 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Responsable d'un système d'information métier
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2016
    Messages : 4
    Par défaut A quoi sert acAdd ?
    Bonjour
    J'espère que vous excuserez ma question de néophyte, survenue après lecture de la discussion.
    A quoi sert le paramètre acAdd de la méthode OpenQuery puisque celle-ci ne peut exécuter la requête action ?

    Merci

  8. #8
    Expert éminent
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 940
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 940
    Par défaut
    bonjour,
    as-tu regardé l'aide Microsoft concernant la méthode OpenQuery ?
    le paramètre DataMode (dont acAdd en fait partie) spécifie le mode de saisie de données (Ajout, Ajout/Mise à jour, Lecture seule) directement dans la requête ouverte dans la fenêtre base de données, cela n'a rien à voir avec l'exécution d'une requête action dans VBA, qui, comme précisé, se fait, de préférence, soit par la méthode Execute mais également par RunSql

    PS: la discussion a été ouverte en 2007, je constate que Openquery fonctionne avec des requêtes action (en tout cas, avec une version récente)
    pour résumé, ce qui fonctionne
    pour toutes types de requêtes:
    - Docmd.Openquery
    pour les requêtes action:
    - Docmd.Openquery
    - Docmd.Runsql
    - Database.Execute

  9. #9
    Expert éminent
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 940
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 940
    Par défaut
    je vois également que dans le code posté il y a DoCmd.SetWarnings False; il faut savoir que si, pendant l'exécution de la requête avec Openquery, il y a une erreur (même non grave, par exemple: un champ non mis à jour suite à une conversion de données) le système provoque une invalidation (Rollback), ce qui veut dire que la mise à jour ou l'ajout ne va pas à son terme et l'utilisateur ne le verra pas (à cause de l'instruction SetWarnings)
    c'est pour cela qu'il faut privilégier Database.Execute avec l'option dbFailOnError pour voir et gérer les erreurs d'exécution

  10. #10
    Membre à l'essai
    Homme Profil pro
    Responsable d'un système d'information métier
    Inscrit en
    Décembre 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Responsable d'un système d'information métier
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2016
    Messages : 4
    Par défaut
    Merci
    Oui j'avais bien lu les différentes pages d'aide de Microsoft.
    Mais grâce à ton explication, je comprends qu'en fait, le paramètre acAdd permet à l'utilisateur d'ajouter manuellement des enregistrements.
    J'ai testé DoCmd.OpenQuery sur une requête d'ajout, sur Access 2010 : cela ouvre la requête en mode feuille de données mais ne permet pas d'ajouter les enregistrements à une table.

    Merci encore,

  11. #11
    Expert éminent
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 940
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 940
    Par défaut
    Citation Envoyé par An avel
    J'ai testé DoCmd.OpenQuery sur une requête d'ajout, sur Access 2010 : cela ouvre la requête en mode feuille de données mais ne permet pas d'ajouter les enregistrements à une table.
    ah OK, donc cela fonctionnerait avec les versions après 2010, sans savoir à partir de laquelle ... (j'ai Access 2016)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 08/04/2010, 13h01
  2. VBA: Probleme exécution requete Update
    Par jeo13 dans le forum Requêtes et SQL.
    Réponses: 19
    Dernier message: 10/09/2008, 08h14
  3. Exécuter une requete ajout paramétrée
    Par bestall666 dans le forum VBA Access
    Réponses: 6
    Dernier message: 27/01/2008, 00h58
  4. VBA SQL proble de requete ajout
    Par darkspoilt dans le forum VBA Access
    Réponses: 2
    Dernier message: 21/05/2007, 16h56
  5. SQL VBA probleme de requete ajout
    Par darkspoilt dans le forum Langage SQL
    Réponses: 3
    Dernier message: 21/05/2007, 15h55

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