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 :

Recuperer dans un recordset le resultat d'une requete parametree existante dans ACCESS


Sujet :

VBA Access

  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Andorre

    Informations forums :
    Inscription : Août 2012
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Recuperer dans un recordset le resultat d'une requete parametree existante dans ACCESS
    Bonjour,

    Je débute dans la programmation VBA pour ACCESS et j'ai une question pour vous.

    J'ai une TABLE: tblCitation (id_Citation,Citation,Id_Auteur,DateCitation).
    (vous l'aurez compris il y a aussi une table tblAuteur mais pas nécessaire pour ma question)

    J'ai une REQUETE prédéfinie 'qryRequetePourUnAuteur' dont le SQL est le suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT tblCitation.Citation, tblCitation.id_Auteur, tblCitation.DateCitation
    FROM tblCitation
    WHERE (((tblCitation.id_Auteur)=[idAuteur]));
    Je souhaite récupérer le résultat de cette requête dans un recordset ADO. Désolé je ne connais pas DAO et je vais essayer de comprendre correctement le modèle ADO avant de me pencher sur DAO.

    Voici donc mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub TestQueryAvecParametreDansRecordset()
      Dim oConn As ADODB.Connection
      Dim rSt As New ADODB.Recordset
      <div style="margin-left:40px">Set oConn = CurrentProject.Connection
      rSt.Open "qryRequetePourUnAuteur ", oConn, adOpenKeyset,</div>adLockOptimistic
     
     Set rSt = Nothing
     Set oConn = Nothing
    End Sub
    Je sais c'est assez classique. Ce code marche lorsque la requête 'qryRequetePourUnAuteur' n'exige pas de paramètre a renseigner. En revanche des que je mets une condition sur le champ 'id_Auteur' (le id_Auteur comme paramètre)...patatra ca marche pas et vu mon niveau je rame un peu. J'ai bien cherche sur le net une solution mais je n'ai pas encore trouvé.

    Je ne comprends pas bien le rôle de 'adCmdStoredProc' qui produira un message d'erreur différent si je l'applique a mon recordset.

    Aussi je me tourne vers vous en postant ce message. Comment puis-je passer a l'instruction Open la valeur du parametre [id_Auteur].

    Merci pas avance de votre aide et désolé pour les accents mon clavier n'en a pas.
    Sancho.

  2. #2
    Nouveau membre du Club
    Inscrit en
    Juillet 2007
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 28
    Points : 26
    Points
    26
    Par défaut
    Avec un sous-formulaire c'est pas plus simple...avec champ père champ fils l'auteur.
    Tu mets un combo pour l 'auteur sur le form père et tu mets ta query sql en source contrôle du forms fils..tu mets en page et/ou en mode continu (faut voir) et hop..


    Si çà nécessite plus de code il faut passer par une fonction + un applyfilter. Tu envoie en paramètre la valeur de l'auteur (sur event click ou sur event onchange...bouton ou combo..je ne sais pas..ca dépend)et tu la récupère dans ta query sql.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function trieauteur(auteur as string)
    DoCmd.ApplyFilter , "tblCitation.id_Auteur =  '" & auteur & "'"
    end
    La syntaxe n'est peut être pas bonne mais je dois pas en être très loin..je copie colle ce genre de truc..je code pas souvent et je code pas mal de language..bref
    Il y a peut être moyen d'éviter le paramètre en récuperant la valeur "auteur" directement dans le filtre sans passer par une fonction..je bosse sous access 2000...^^

  3. #3
    Rédacteur/Modérateur
    Avatar de Jeannot45
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2004
    Messages
    3 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 871
    Points : 8 489
    Points
    8 489
    Par défaut


    peut-être que la lecture du tuto :

    Comprendre les Recordset ADO

    ouvrira quelques perspectives, en particulier le chapitre :

    Création du jeu d'enregistrement

    Bonne continuation
    Jeannot

    Liens Office indispensables à visiter: Cours (Tutos), F.A.Q., Sources VBA

    Ne posez pas de questions par MP, je n'ai pas le temps d'y répondre

  4. #4
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Andorre

    Informations forums :
    Inscription : Août 2012
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Bonjour,

    Merci pour vos réponses et liens.

    La solution de facilité en mettant la valeur du filtre/paramaetre dans le champ d'un formulaire va me dépanner pour le moment afin de progresser.
    Je pensais que l'on pouvait facilement, avec VB, donner a une query deja enregistrée les valeurs de ses paramètres.
    Ce n'est peut-être pas fondé mais a plusieurs reprises en consultant divers sites Excel-Access j'ai lu que la méthode Filter est lente. C'est pourquoi, je n'ai pas cherché a l'utiliser.
    Merci pour le tuto, j'en avais lu une bonne partie mais vu que je débute il n'est pas forcement facile de comprendre des la première lecture la pleine dimension de ADO. Néanmoins ça va être un peu mon livre de chevet. Ce n'est pas parce que je l'ai lu que je saurais tout de ADO. Je pense qu'il faut une bonne dose d’expérience associée.

    Encore merci pour vos suggestions et votre aide rapide.
    Sancho

  5. #5
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Andorre

    Informations forums :
    Inscription : Août 2012
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Bonjour,

    Je reviens vers vous car, j'ai bien essayé ce que vous m'avez suggérer a savoir mettre mes paramètres sur un formulaire avant d’exécuter la ligne de code plus bas mais je n'y arrive pas. Ca bloque au niveau du code. Lorsque ma requête prédéfinie dans ACCESS n'a pas de paramètres l'instruction suivante fonctionne très bien:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    MonRecordset.Open "NomRequêtePrédéfinie", Maconnexion,adOpenKeyset,adLockOptimistic
    Et j'obtiens dans MonRecordset le résultat de la requête prédéfinie.

    Si maintenant je mets des paramètres dans la requête prédéfinie notamment sur les dates ou je fais un between, et les dates proviennent d'un formulaire j'obtiens le message d'erreur dont je vous joint une copie d’écran.


    Est ce que vous savez pourquoi ce message? Et pourquoi les paramètres bloque l’exécution de la requête predefinie dans monRecordset?

    PS :Si besoin je peux joindre un fichier light que j'ai préparé pour vous montrer un exemple concret avec datas 'scrambled',

    Sancho
    Images attachées Images attachées  

  6. #6
    Rédacteur/Modérateur
    Avatar de Jeannot45
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2004
    Messages
    3 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 871
    Points : 8 489
    Points
    8 489
    Par défaut


    Joins ton fichier, il me semble que cela sera plus concret
    Jeannot

    Liens Office indispensables à visiter: Cours (Tutos), F.A.Q., Sources VBA

    Ne posez pas de questions par MP, je n'ai pas le temps d'y répondre

Discussions similaires

  1. Mettre dans un tableau le resultat d'une requete
    Par Devilju69 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 19/12/2013, 18h33
  2. impossible d'afficher le resultat d'une requete "Linq to" dans un datagrid
    Par zouuc dans le forum Windows Presentation Foundation
    Réponses: 10
    Dernier message: 19/10/2010, 15h44
  3. [AC-2003] resultat d'une requete par defaut dans une liste deroulante
    Par MCarole dans le forum VBA Access
    Réponses: 2
    Dernier message: 15/05/2009, 13h53
  4. Comment récupérer le résultat d'une requête dans un tableau ?
    Par Kylen dans le forum Accès aux données
    Réponses: 1
    Dernier message: 14/06/2006, 19h32
  5. Réponses: 3
    Dernier message: 02/11/2005, 02h45

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