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 :

Problème d'éxécution d'une requête paramétrée dans un objet QueryDef


Sujet :

VBA Access

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 21
    Points : 20
    Points
    20
    Par défaut Problème d'éxécution d'une requête paramétrée dans un objet QueryDef
    Bonjour à tous,
    Je suis débutant en VBA et je souhaiterais avoir vos lumières sur mon problème :
    J'ai sous Access 2003 enregistré une requête paramétrée, que je souhaiterais éxécuter en fonction d'une valeur sélectionnée dans un champ.

    Je me suis un peu documenté, (notamment sur les tutos et forums de developpez.com) et ai opté pour passer comme paramètre à la requête une variable sous VBA, variable déclarée bien entendu dans le code lié à l'évènement doubleclic du champ concerné (en l'occurence, c'est une liste).

    J'ai donc déclaré un objet DAO.QueryDef
    La variable string censée contenir la valeur de mon paramètre
    J'ai affecté la valeur du champ à la dite variable
    J'ai chargé ma requête paramétrée dans l'objet QueryDef
    J'ai affecté à l'attribut "parameters" de l'objet QueryDef la variable
    Je lance la méthode d'éxécution de l'objet QueryDef

    Voici le code correspondant à cette séquence :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub Liste52_DblClick()
     
    Dim qdf As DAO.QueryDef
    Dim correspondant As String
     
    correspondant = Liste52.Value
     
    Set qdf = CurrentDb.QueryDefs("Applis_AD_Corresp")
    qdf.Parameters("NOM_CORRESP") = correspondant
    MsgBox (qdf.Parameters("NOM_CORRESP")) 'là, c'est une trace
    qdf.Execute
     
    End Sub
    Il est à noter que j'ai vérifié ma requête paramétrée en la lançant...elle s'éxécute sans problème, mais l'éxécution se bloque lorsque l'objet qdf lance sa méthode d'éxécution (le débugueur pointe sur cette ligne en erreur)

    Un message d'erreur s'affiche : "impossible d'éxécuter une requête de sélection" (erreur 3065).

    Auriez vous quelques détails à propos de cette erreurs ou auriez vous remarqué des erreur dans le copier collé que je vous ai fait (c'est pas faute d'avoir vérifié ^^) ?

    Merci d'avance

  2. #2
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 628
    Points : 34 330
    Points
    34 330
    Par défaut
    salut,
    si tu fais une requete de type SELECT "simple" tu ne peux utiliser le Execute.
    Par contre je crois que tu peux passer par ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim RS as DAO.RecordSet
    Set RS = qdf.Openrecordset
    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

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 21
    Points : 20
    Points
    20
    Par défaut
    Merci de ta réponse.
    J'ai fait quelques essais en utilisant l'objet recordset auquel tu fais référence, quelques recherches aussi mais je n'ai pas trouvé pour cet objet (recordset) de méthode pouvant traiter les paramètres d'une requête.

    Je continue à chercher et marquerai le problème comme étant résolu si je trouve, mais si tu as quelques détails par rapport à cet aspect du traitement d'une requête avec record set, n'hésite pas à m'en faire part.

    Merci quoiqu'il en soit, j'ignorais que l'objet querydef ne traitait pas les requêtes de sélection

    Cordialement

  4. #4
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 628
    Points : 34 330
    Points
    34 330
    Par défaut
    bon, je redonne tout le code, parce que j'ai du mal m'exprimer...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub Liste52_DblClick()
     
    Dim qdf As DAO.QueryDef
    Dim correspondant As String
     Dim RS as DAO.RecordSet
     
    correspondant = Liste52.Value
     
    Set qdf = CurrentDb.QueryDefs("Applis_AD_Corresp")
    qdf.Parameters("NOM_CORRESP") = correspondant
    MsgBox (qdf.Parameters("NOM_CORRESP")) 'là, c'est une trace
    Set RS = qdf.Openrecordset 
    End Sub
    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

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 21
    Points : 20
    Points
    20
    Par défaut
    Ah ok, merci de la précision, je n'avais pas supposé que les deux lignes que tu avais données étaient à insérer dans le code que j'ai donné au début !
    au temps pour moi, merci en tout cas ^^.

    Bon, je marque le sujet comme étant résolu.

    Merci encore.

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

Discussions similaires

  1. Problème de recordset d'une requête paramêtrée
    Par rob1son76 dans le forum VBA Access
    Réponses: 3
    Dernier message: 28/09/2011, 10h47
  2. Réponses: 2
    Dernier message: 14/01/2011, 19h33
  3. [OpenOffice][Base de données] Afficher des paramètres d'une requête paramétrée dans un formulaire
    Par ggnore dans le forum OpenOffice & LibreOffice
    Réponses: 0
    Dernier message: 02/09/2009, 11h37
  4. Appeler une requête paramétrée dans un sub
    Par Celephais dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 13/11/2007, 11h49

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