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é :
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.
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 :] & "*"));
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 :
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.
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
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.
Partager