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

Access Discussion :

VBA & Requête paramétrée


Sujet :

Access

  1. #1
    Membre du Club

    Inscrit en
    Juillet 2003
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 34
    Points : 53
    Points
    53
    Par défaut VBA & Requête paramétrée
    Bonjour à tous,

    j'ai une requête paramétrée (rqt GL) avec le paramètre [1].

    Via VBA, j'affecte une valeur au paramètre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Set qdf = db.QueryDefs("rqt GL")
    qdf.Parameters("1") = "Toto"
    J'aimerais maintenant enregistrer ma requête en dur (avec les bonnes valeurs à la place des paramètres).

    J'ai bien essayé avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set qdf = db.CreateQueryDef ("Ma requete",qdf.sql)
    mais çà ne fonctionne pas, le paramètre n'est pas remplacé par sa valeur (j'ai vérifié avec un Msgbox qdf.sql )

    Merci pour vos réponses.

  2. #2
    MC2
    MC2 est déconnecté
    Membre habitué

    Femme Profil pro
    Chef de projet en SSII
    Inscrit en
    Août 2002
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 54
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Août 2002
    Messages : 148
    Points : 199
    Points
    199
    Par défaut
    Salut,
    mais attention, après... 'a plus de paramètre...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Set qdf = db.QueryDefs("rqt GL") 
    qdf.SQL = Replace(qdf.SQL, "[1]", "'Toto'")
    ret = InStr(1, qdf.SQL, "SELECT")
    If ret > 1 Then qdf.SQL = Mid(qdf.SQL, ret)
    Set qdf = Nothing
    Le 'Set' à la fin est inutile si ta sub se termine juste après (Nothing implicite) et le tout est sauvegardé implicitement.
    A+

  3. #3
    Membre du Club

    Inscrit en
    Juillet 2003
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 34
    Points : 53
    Points
    53
    Par défaut
    Merci pour ta réponse... mais l'intérêt est tout de même de conserver la requête paramétrée.

    En complément :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set rsb = qdf.OpenRecordset
    ouvre le bon recordset.....

  4. #4
    MC2
    MC2 est déconnecté
    Membre habitué

    Femme Profil pro
    Chef de projet en SSII
    Inscrit en
    Août 2002
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 54
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Août 2002
    Messages : 148
    Points : 199
    Points
    199
    Par défaut
    Attends, je ne comprends plus là... tu veux quoi au final : 1 ou 2 requêtes ? explique toi stp.
    Voici le SQL d'une requête paramétrée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    PARAMETERS 1 Text ( 255 );
    SELECT Table2.tintin, Table2.tata
    FROM Table2
    WHERE (((Table2.tata)=[1]));
    Ce que je t'ai envoyé donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT Table2.tintin, Table2.tata
    FROM Table2
    WHERE (((Table2.tata)='Toto'));
    Donc là, elle n'est plus paramétrée.
    Maintenant, si tu veux conserver la partie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PARAMETERS 1 Text ( 255 );
    il suffit de ne garder que les 2 1ères lignes du code déjà envoyé, soit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Set qdf = db.QueryDefs("rqt GL") 
    qdf.SQL = Replace(qdf.SQL, "[1]", "'Toto'")
    Donc, là, une seule requête mais l'intérêt est minime puisque, même s'il a été conservé, le paramètre n'est plus utilisé dans la clause WHERE.

    Par contre, si tu veux garder ta requête paramétrée source intacte et créer 1 nouvelle en remplaçant le paramètre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Dim qdf0 As QueryDef, qdf As QueryDef, rsb As Recordset
    Dim ret As Integer
     
    Set qdf0 = CurrentDb.QueryDefs("RTable2")
    qdf0.SQL = Replace(qdf0.SQL, "[1]", "'Toto'")
    ret = InStr(1, qdf0.SQL, "SELECT")
    If ret > 1 Then qdf0.SQL = Mid(qdf0.SQL, ret)
     
    'DoCmd.DeleteObject acQuery, "RTable2_1"
    Set qdf = CurrentDb.CreateQueryDef("RTable2_1", qdf0.SQL)
    Set rsb = qdf.OpenRecordset
    'MsgBox rsb.RecordCount...
    A+

  5. #5
    Membre du Club

    Inscrit en
    Juillet 2003
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 34
    Points : 53
    Points
    53
    Par défaut
    Ok merci....

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

Discussions similaires

  1. requête paramétrée vba
    Par cgodefrw dans le forum VBA Access
    Réponses: 6
    Dernier message: 13/05/2009, 11h28
  2. Requête paramétrée depuis VBA
    Par efvsql dans le forum Microsoft BI
    Réponses: 0
    Dernier message: 25/08/2008, 21h24
  3. vba requête paramétrée liste de choix déroulante
    Par langelot222 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 11/05/2007, 17h38
  4. [code VBA]passage de variable pour une requête paramétrée
    Par christrabin dans le forum VBA Access
    Réponses: 3
    Dernier message: 13/04/2007, 15h30
  5. Comment utiliser en VBA le champ paramétré d'une requête ?
    Par fredpeca dans le forum Requêtes et SQL.
    Réponses: 26
    Dernier message: 23/01/2007, 16h40

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