Liste déroulante et Zone de liste [ Access ]

Liste déroulante et Zone de liste [ Access ] - VB/VBA/VBS - Programmation

Marsh Posté le 03-05-2006 à 11:09:55    

Bonjour :hello:  
Je travaille sous Access 2003
Voila j'ai une liste déroulante nommé Nom_liste qui contient :
id_user
Nom
Prenom
 
J'aimerais simplement savoir comment récuperé l'id user de l'utilisateur selectionné dans la liste déroulante pour après l'insérer dans une requete SQL contenu dans une zone de liste.
 
Ce que j'ai pour le moment est cela  

Code :
  1. ... WHERE T_UTILISATEUR.id_user=Nom_liste.column(1);
  2. ou
  3. ... Where T_UTILISATEUR.id = Forms!F_Consult.Nom_liste


Mais ça ne marche pas
 
Voila merci d'avance à tous :p

Reply

Marsh Posté le 03-05-2006 à 11:09:55   

Reply

Marsh Posté le 03-05-2006 à 11:31:34    

est-ce que tu as écrit une requête pour afficher les données de la liste?
comme :  
SELECT * FROM Table
que tu as mis dans les propriétés?

Reply

Marsh Posté le 03-05-2006 à 11:34:16    

les ... avec where c'est la requete comme :

Code :
  1. SELECT T_UTILISATEUR.age FROM T_UTILISATEUR WHERE T_UTILISATEUR.id_user = Nom_liste.column(1);



Message édité par CliMz le 03-05-2006 à 11:35:01
Reply

Marsh Posté le 03-05-2006 à 11:38:14    

parce que quand il y a une lsite déroulante, pour insérer les valeurs dedans, j'écris dans (clic droit sur la liste), [propriétés], (onglet données), [contenu], et tu écris ta requête (SELECT Id_user, Nom, Prénom FROM Table et tu valides
A partir de là, tu as les valeurs dans ta table.
Et dans le champ en dessous (colonne liée, tu écris "1" )
ainsi quand tu récupèreras les valeurs de ta liste, ça correspondra à l'id_user

Reply

Marsh Posté le 03-05-2006 à 11:41:56    

la liste déroulante contient :
SELECT T_UTILISATEUR.id_user, T_UTILISATEUR.Nom, T_UTILISATEUR.Prenom FROM T_UTILISATEUR;  
 
Donc j'ai bien tout ce que je veu dans cette liste mais le problème c'est par exemple de récuperé l'age dans un Zone de liste
Donc comment récuperer les valeurs selectionné dans ma liste

Reply

Marsh Posté le 03-05-2006 à 11:42:02    

Il faut tout simplement remplacer 1 par 0 dans
...Nom_liste.column(0);  
 
Le numéro correspond aux colonnes, et d'après ce qui est dit, on a :
0 pour id_user
1 pour Nom
2 pour Prenom

Reply

Marsh Posté le 03-05-2006 à 11:50:42    

il met dit :
"Fonction Nom_Liste.column Non défini dans l'expression"
j'ai pourtant cela dans contenu :
 
SELECT T_UTILISATEUR.id_user FROM T_UTILISATEUR WHERE T_UTILISATEUR.Nom=Nom_liste.column(0);  
 
?

Reply

Marsh Posté le 03-05-2006 à 12:15:54    

Le numéro 0 est pour ID par pour le nom. Pour le nom c'est le numéro 1.
 
Par ailleurs cela dépend où se trouve ce SELECT. Il y a 36 moyens de faire des SELECT. Il faudrait préciser le contexte, montrer les lignes avant et après ce SELECT.
 
Peut-être qu'il suffit de préfixer Nom_liste... par Me pour faire Me.Nom_Liste...  
 
Est-ce que vous avez déjà utilisé des SELECT avant ? des SELECT avec des paramètres ? des SELECT dans ce même contexte ?

Reply

Marsh Posté le 03-05-2006 à 13:14:00    

Moi ce que je vois c'est que le code fourni en exemple n'est pas le code réel.
À partir de là on peut difficilement en déduire quoique ce soit.
Mais je soupçonne un problème de formation de la chaine SQL qui ne devrait pas inclure la référence à la listbox Nom_liste.column entre les guillemets (qui n'apparaissent pas dans le code montré...)

Reply

Marsh Posté le 03-05-2006 à 13:40:00    

Alors pour commencer le code est le bon ce n'est pas un exmple je ne vois pas l'interet que j'ai à poster un code faux.
Sur la liste déroulante mon code est celui ci :

Code :
  1. SELECT T_UTILISATEUR.id_user, T_UTILISATEUR.Nom, T_UTILISATEUR.Prenom FROM T_UTILISATEUR;


Ensuite mon code actuel sur la liste de zone est le suivant :

Code :
  1. SELECT T_UTILISATEUR.Nom FROM T_UTILISATEUR WHERE T_UTILISATEUR.id_user =" & Me.Nom_liste.column(0) & ";


=> Qui me donne une erreur sur le type  
Ou alors l'inverse  

Code :
  1. SELECT T_UTILISATEUR.id_user FROM T_UTILISATEUR WHERE T_UTILISATEUR.Nom=" & Me.Nom_liste.column(1) & ";


=> Qui lui ne me donne pas d'erreur mais rien ne s'affiche dans la zone de liste
 
Bizare ?


Message édité par CliMz le 03-05-2006 à 13:40:25
Reply

Marsh Posté le 03-05-2006 à 13:40:00   

Reply

Marsh Posté le 03-05-2006 à 14:57:08    

up ?

Reply

Marsh Posté le 03-05-2006 à 15:31:00    

Excuse-moi, je ne vois pas bien où est mis ce SELECT ?
Il est dit qu'il est mis "sur la liste déroulante". Qu'est-ce que cela veut dire ?
 
Je suppose que c'est sur une ligne de la boite de dialogue "Propriétés" de la liste déroulante, mais sur quelle ligne ? Que contiennent les autes lignes ? Est-ce que des SELECT avec des paramètres qui marchent ont déjà été fait ?
 
Je pose cette question parce que je crois que le problème ne vient pas de la liste déroulante (sauf si on se trompe d'événement), mais viens plutôt du SELECT avec un paramètre. Dans ce cas, comme pour les autre problèmes en informatique, il faut commencer par des choses simples puis ajouter les difficultés une à une. Par exemple, le SELECT pourrait d'abord être un SELECT sans paramètre, pour voir s'il marche, et ce SELECT pourrait être rattaché à un bouton ordinaire. Puis on rattacherait ce SELECT à une liste déroulante, puis on essayerait un SELECT avec un paramètre en utilisant le bouton, et enfin quand cela marcherait on utiliserait le SELECT avec un paramètre et la liste déroulante.
 
Par ailleurs, j'ai lu quelque part (je ne me souviens plus où hélas) que lorsqu'on avait un paramètre, il fallait utiliser une procédure pour l'associer à une requête, par exemple

SELECT ... WHERE colone1 = get_parametre();

Et dans un module la routine get_parametre() est définie par

Public Function get_parametre() As String
   get_parametre = une_variable_globale_remplie_dans_event_dun_formulaire
End Function


 
C'est la solution que j'adopte personnellement, mais je ne mets pas mes requêtes directement dans la boite de dialogue "Propriétés", je préfère les mettre dans les collections de Requetes, et les appeler à partir du code VBA. Cela me permet de tester les requêtes sans les formulaires. C'est plus pratique pour les mettre au point. Je préfère aussi qu'elles soient centralisées dans l'onglet "Requete", de la même manière que les tables sont dans l'onglet "Table" et les formulaires dans l'onglet "Formulaire".


Message édité par olivthill le 03-05-2006 à 15:34:36
Reply

Marsh Posté le 03-05-2006 à 15:35:04    

Non, ton code n'était pas le bon; la preuve des guillemets viennent d'apparaître dans ta dernière formulation...
Et si je copie/colle ton code dans une fenêtre Access il est certain que ça ne fonctionnera pas tel quel.
Tu omets donc des choses en supposant qu'elles ne sont pas la cause de tes problèmes.
C'est peut-être vrai, mais peut-être pas et ça me saoule qu'on vienne demander des solutions sans donner le contexte d'exécution exact.
Si la solution de ton problème est dans la syntaxe SQL on finira par trouver, mais sinon tu perds du temps en nous induisant sur une fausse piste. C'est tout.
 
Si tu fabriques ta chaine SQL et que tu la stockes dans une variable String, donne nous le contenu de cette variable. Et donne nous le type de données du champ id_user.

Reply

Marsh Posté le 03-05-2006 à 15:50:50    

Mort de rire!  tegu fais certainement parti de cette famille hostile plutôt répandu sur les forums qui ne répondent pas aux problèmes et questionnement des gens mais préfère critiquer la moindre brindille d'erreur d'un post de personne deja suffisamment perdu dans leur travaille.
Ensuite je pense que tu pourras comprendre que mon premier post n'a pas de guillemet car je ne savais pas qu'il fallait en mettre et secondement que tu pourras également comprendre que je ne peux ni t'envoyer la base de données de mon entreprise ni te copié les 50 champs d'option de chaque élément de mon interface.
Pour finir j'ajouterai que si cela t'énerve tellement, je cite :
 -qu'on vienne demander des solutions sans donner le contexte d'exécution exact.  
Simplement passe ton chemin, certaine personne essai de comprendre les problèmes des autres (but d'un forum) et d'autre ne comprennent pas la difficulté des autres (no comment).
 
Pour les autres merci à tous mais je vais chercher seul.

Reply

Marsh Posté le 03-05-2006 à 16:00:56    

Mais non, tegu est très sympa, et en plus très compétent. Ce n'est pas comme les Johns du forums qui répondent aux questions sur les pages HTML et CSS  :)  
Les problèmes Excel peuvent paraitre simples, mais le sont rarement. Excel demande un petit apprentissage, et en plus la documentation n'est pas la meilleure qui soit.
Bon courage !

Reply

Marsh Posté le 03-05-2006 à 17:16:00    

>CliMz, quand tu aura fini de chercher seul et si tu ne trouves pas la réponse je serai sans doute encore là pour t'aider. Même si tu ne comprends pas pourquoi et que cela t'étonne.
 
Mais il faudrait que tu répondes à la demande que j'ai faite pour y voir plus clair, à savoir

Si tu fabriques ta chaine SQL et que tu la stockes dans une variable String, donne nous le contenu de cette variable. Et donne nous le type de données du champ id_user.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed