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 :

Appeler une requête en Visual Basic [AC-2007]


Sujet :

VBA Access

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2011
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Appeler une requête en Visual Basic
    Bonjour,
    Je suis étudiant en BTS IRIS et actuellement en stage de fin de première année. Je travaille sur une base de données, et un problème s'oppose au bon déroulement de mon stage depuis quelques jours.

    Voici la situation :
    Je dispose sous Access 2007 d'une table regroupant des clients pour la société. Le but de la petite application que je vais créer va être de rechercher un client suivant un critère choisi : son numéro de client, le nom de sa société, le pays, la ville, le code postal ou une note marquée dans un champ réservé aux commentaires, et d'imprimer tout ce qui concerne le client trouvé dans une fiche. On sélectionne dans une liste déroulante le champ dans lequel on va effectuer la recherche, et on clique sur le bouton rechercher qui va alors lancer la requête de recherche correspondant au champ sélectionné. C'est ici que ça coince : comment faire pour lancer la requête ainsi ?

    Une première série de recherche imprécises du fait que je n'avais aucune idée sur la manière de m'y prendre m'a amené à envoyer un e-mail à mon professeur qui m'a alors informé qu'il fallait utiliser du code visual basic. J'ai pu ainsi affiner mes recherches qui m'ont conduit à des résultats plus précis. Malheureusement : je ne connais rien au visual basic et je ne comprends pas les bouts de code que je trouve. Et comme cela manque d'exemples et qu'evidemment ça ne fonctionne pas directement, eh bah je suis totalement perdu et déboussolé. N'étant pas du tout autodidacte, les cours tout écrits sans exemples ni quelqu'un pour m'expliquer, ça ne m'avance pas à grand chose. Je me tourne donc vers ce forum dans l'espoir qu'on puisse m'expliquer clairement comment je peux faire pour éxécuter une simple requête sur simple clic d'un bouton.

    Mes recherches m'ont donc renvoyé deux façons d'appeler une requête : soit de l'écrire directement dans le code, soit d'utiliser les "recordset".

    Voici un exmeple de requête que j'utilise pour rechercher un client par le nom de société :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT *
    FROM Clients
    WHERE (((Clients.Société) Like "*" & [Saisir la société à rechercher :] & "*"));
    Les requêtes marchent très bien individuellement, pas de souçis sur le fonctionnement, je ne penses pas que ce soit ça qui bloque.

    Pour la méthode recordset, j'ai rapidement trouvé qu'il fallait cocher "Microsoft DAO 3.6 Object Library" dans le menu Outils>Références. Un problème à également été rapidement rencontré lorsque j'ai cliqué sur OK :


    Voici le bout de code qui est à peu près le même que celui que je trouve un peu partout, si on pourrait me l'expliquer et me dire ce qu'il faut que j'ajoute/retire pour que cela fonctionne ça m'aiderai énormément :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Dim qdf As DAO.QueryDef 
    Dim rcs As DAO.Recordset
     'référence à la requête 
    Set qdf = CurrentDb.QueryDefs("NomQuery") 
     'code qui utilise qdf 
     'par exemple 
    qdf.Parameters("NomParamètre") = valeur  '<== si requête paramétrée 
    qdf.Execute     '<== si requête action 
    Set rcs = qdf.OpenRecordset   '<== pour travailler sur les données 
     'libération de la référence 
    Set qdf = Nothing
    Le paramètre de la requête étant saisi par l'utilisateur, je ne sais pas non plus ce que je dois faire de la ligne pour les requêtes paramétrées.

    Que j'essaye ce bout de code ou que j'insère la requête en SQL directement dans le code, lorsque je teste, le programme me renvoie une erreur 2465. Une nouvelle recherche m'a indiqué qu'il fallait mettre en publique le code du bouton. J'ai donc tout mis en publique, mais il me sort la même erreur et pointe sur la ligne de code ou j'essaye d'appeler la requête :



    Voilà mon problème et mes traces de recherches pour que vous puissiez voir à peu près ou j'en suis. Je sais coder en C et C++, mais je ne connais rien du tout au visual basic : je ne comprends pas les bouts de code que je trouve, je ne différencie pas les déclaration des affectations ou des appels de fonctions
    Je vous remercie d'avance de l'attention que vous porterez à mon message et vous souhaite une bonne journée.

  2. #2
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 512
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 512
    Points : 16 440
    Points
    16 440
    Par défaut
    Bonjour

    Si tu ne connais pas VBA, une solution plus simple que tu peux utiliser est de créer une table pour le(s) choix fait(s) : tu y associes un formulaire où tu interdis l'ajout et la suppression (de façon à avoir un enregistrement unique).

    Ensuite tu utilises cette table pour croiser avec ta requête au lieu d'utiliser des paramètres.

    Si tu optes néanmoins pour VBA, il faudra de toute façon un formulaire (sans table associée) pour y récupérer les choix et construire la requête dans le code.

    Quel que soit ton choix, le formulaire à construire doit contenir tous les champs utilisables pour le filtre et non une liste de champs.

  3. #3
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    Regarde si :

    Création d'un formulaire de recherche multicritères

    http://jeannot45.developpez.com/arti...multicriteres/

    ne répondrait pas à tes besoins.

    A+

  4. #4
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2011
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    Merci à vous, la méthode de 78chris est en effet beaucoup plus simple et m'as permis de contourner le problème sans avoir besoin d'utiliser le Visual Basic. J'ai pu résoudre les difficultés que m'ont apporté cette alternative plus facilement, je n'ai même pas eu besoin d'une table intermédiaire.
    J'avais déjà jeté un oeil au formulaire de recherche multicritères mais sans trop de succès, ça ne m'avait qu'un peu avancé.
    Merci encore.

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

Discussions similaires

  1. VB.NET vs C# vs Java ou existe-t-il une vie après Visual Basic 6 ?
    Par B-Pascal dans le forum Débats sur le développement - Le Best Of
    Réponses: 32
    Dernier message: 05/07/2007, 12h46
  2. [VB6]appeler un batch en visual basic
    Par grosminou dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 04/05/2006, 10h53
  3. Comment appeler une requête d'une autre base
    Par remi59 dans le forum Access
    Réponses: 1
    Dernier message: 17/11/2005, 10h40
  4. DLL Visual C++ appelée dans un programme Visual Basic
    Par marseillais57 dans le forum MFC
    Réponses: 7
    Dernier message: 21/07/2005, 14h57
  5. []débogage sur une requête dasn visual basic
    Par mcay dans le forum VB 6 et antérieur
    Réponses: 19
    Dernier message: 24/09/2003, 09h59

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