Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 20/06/2011, 10h07   #1
Invité de passage
 
Homme stephane
Étudiant
Inscription : juin 2011
Messages : 2
Détails du profil
Informations personnelles :
Nom : Homme stephane
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juin 2011
Messages : 2
Points : 1
Points : 1
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 :
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 :
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.
stent est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/06/2011, 11h32   #2
Membre émérite
 
Conseil + Formation
Inscription : février 2010
Messages : 583
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Activité : Conseil + Formation

Informations forums :
Inscription : février 2010
Messages : 583
Points : 885
Points : 885
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.
78chris est actuellement connecté   Envoyer un message privé Réponse avec citation 10
Vieux 21/06/2011, 00h20   #3
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 470
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 470
Points : 7 552
Points : 7 552
Regarde si :

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

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

ne répondrait pas à tes besoins.

A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2011, 11h53   #4
Invité de passage
 
Homme stephane
Étudiant
Inscription : juin 2011
Messages : 2
Détails du profil
Informations personnelles :
Nom : Homme stephane
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juin 2011
Messages : 2
Points : 1
Points : 1
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.
stent est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h22.


 
 
 
 
Partenaires

Hébergement Web