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

Requêtes et SQL. Discussion :

peut on exécuter une requête sélection avec vba


Sujet :

Requêtes et SQL.

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 12
    Points : 6
    Points
    6
    Par défaut peut on exécuter une requête sélection avec vba
    Bonjour à tous,
    Dans une base de données access, je dois utiliser 25 fois une requête sélection en changeant simplement un code!
    Plutôt que de la réécrire 25 fois, j'essaie de trouver du code vba qui ne change que le critère!
    Voici la requête access en sql
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT détail_prev_année.Code, détail_prev_année.Dates, détail_prev_année.MATIN, détail_prev_année.REPAS, détail_prev_année.APREM, détail_prev_année.N°adhérent, détail_prev_année.[Centre mercredi]
    FROM détail_prev_année
    WHERE (((détail_prev_année.Code)="T1"));
    Il y a juste le code comme "T1" à changer! J'ai essayé plein de trucs, mais je nage.... et j'ai des problèmes de mémoire(67 ans)!!
    Merci pour votre aide!
    Michel

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 351
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 351
    Points : 23 816
    Points
    23 816
    Par défaut
    Bonjour,

    tu as deux solutions :
    1. Creer le SQL dans le code
    2. Usiliser un parametre


    Solution 1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    dim tonCode as string:tonCode="T1"
    Dim SQL as string
    SQL="SELECT détail_prev_année.Code, détail_prev_année.Dates, détail_prev_année.MATIN, détail_prev_année.REPAS, détail_prev_année.APREM, détail_prev_année.N°adhérent, détail_prev_année.[Centre mercredi] FROM détail_prev_année WHERE (((détail_prev_année.Code)=""" & tonCode & """));"
    dim db as dao.database:set db=currentdb
    dim r as dao.recorset:set r=db.openrecordset(SQL)
     
    ' Ici exploiter r
     
    r.close:set r=nothing
    db.close:set db=nothing
    Solution 2

    Tu crees ta requete normalement et dans la ligne de critere tu mets [prmCode] (out tout autre chose significative, le nom importe peu)
    Apres tu vas dans le menu requete et tu choisi "Parametres" et tu ajoutes une ligne prmCode, type texte.
    Ensuite voila comment l'utiliser avec VBA.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    dim db as dao.database:set db=currentbd
    dim q as dao.querydef:set q=db.querydefs("NomTaRequete")
    q.parameters("prmCode")="T1"
    dim r as dao.recordset:set r=q.openrecordset()
    r.close:set r=nothing
     
    ' Ici exploiter r
     
    set q=nothing
    db.close:set db=nothing
    A+

  3. #3
    Membre expérimenté
    Avatar de minot83
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mars 2006
    Messages
    972
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2006
    Messages : 972
    Points : 1 430
    Points
    1 430
    Par défaut
    Bonsoir,

    il faut se placer dans un formulaire, dans lequel tu peux par exemple ajouter un controle zone de liste deroulante, qui te permettra de choisir ta valeur, et enfin, placer dans ta requête la référence à ce contrôle.

    Ce qui donnera:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT détail_prev_année.Code, détail_prev_année.Dates, détail_prev_année.MATIN, détail_prev_année.REPAS, détail_prev_année.APREM, détail_prev_année.N°adhérent, détail_prev_année.[Centre mercredi]
    FROM détail_prev_année
    WHERE ((détail_prev_année.Code)=[Formulaires]![le-nom-de-ton-formulaire]![le-nom-de-ta-zone-de-liste] );
    Cordialement

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 12
    Points : 6
    Points
    6
    Par défaut merci marot_r
    Merci beaucoup! J'ai opté pour la deuxième solution!
    Et cela marche très bien!
    Merci encore!
    Michel

Discussions similaires

  1. Exécuter une requête SQL avec Hibernate Interceptor
    Par top007 dans le forum Hibernate
    Réponses: 0
    Dernier message: 13/08/2014, 11h47
  2. Exécuter une requête Access en VBA
    Par mimi123456789 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 05/09/2012, 11h20
  3. [AC-2000] Exécuter une requête Access en VBA (QueryDefs)
    Par shakapouet dans le forum VBA Access
    Réponses: 1
    Dernier message: 16/08/2012, 11h55
  4. [AC-2003] Exécuter une Requête SQL dans VBA
    Par domik dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 24/08/2010, 13h22
  5. éxecution d'une requête ajout avec VBA
    Par averooès dans le forum VBA Access
    Réponses: 16
    Dernier message: 06/02/2009, 17h22

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