1 membre
Connectés : ( personne )
- La Charte du Forum - Forum - Problèmes Access des débutants
Sujet n° 725 |
Question de débutant |
le 16/06/2014 : 16:39 par lance
visiteur |
Bonjour,
J'ai créée une table qui a une liste déroulante allant chercher le nom d'un objet dans une autre table. J'aimerais maintenant faire en sorte de pouvoir écrire la donnée que je veux si elle n'est pas dans le menu déroulant et qu'elle devienne aussi une nouvelle donnée de ce même menu.
En espérant avoir été clair, Vous remerciant par avance,
Lancelot MAUNY |
|
|
Réponse n° 1 -------- le 16/06/2014 : 19:30 par 3Stone
Administrateur
|
Bonjour,
Le principe est identique à ce code, il faut bien sûr adapter le nom de la table.
Cordialement, Pierre (3Stone) |
|
|
Réponse n° 2 -------- le 17/06/2014 : 13:27 par lance
visiteur |
Bonjour Merci pour cette réponse rapide, une petite précision s'il vous plait : Où est ce que ce code s'écrit ?
Cordialement Lancelot Mauny |
|
|
Réponse n° 4 -------- le 19/06/2014 : 10:28 par lance
visiteur |
Bonjour,
J'ai aujourd'hui une question un peu plus corsée,
J' aimerais faire en sorte que le contenu d'une zone de liste déroulante dépende de la valeur d'une autre liste, seulement cette dernière est à choix multiple. J'ai donc noté // SELECT [T_Service].N°, [T_Service].service_nom FROM T_Service WHERE [T_Service].service_entreprises=Forms![F_Salarié].lst_salarié_entreprises; // où service_entreprises peut sélectionner plusieurs entreprises et lst_salarié_entreprises ne peut choisir qu'une entreprise.
Voilà, j'espère que cela n'est pas trop confus.
Merci par avance pour votre aide. Cordialement Lancelot |
|
|
Réponse n° 5 -------- le 19/06/2014 : 18:36 par 3Stone
Administrateur
|
Bonjour,
Oui, c'est possible... bien que je ne vois pas l'utilité de ce genre de fonctionnement.
D'abord, une sélection multiple ne peut se faire que sur une zone de liste (listbox), une liste déroulante (combobox) ne le permet pas.
Ensuite, pour récupérer les items sélectionnés dans cette zone de liste, il faut parcourir cette liste.
Code exemple :
Code : For Each varItem In ctl.ItemsSelected sSQL = sSQL & ctl.ItemData(varItem) & "," Next varItem
on admet ici que l'identifiant numérique (la clé primaire) se trouve dans la première colonne de la zone de liste. Ensuite, il faut construire la chaine de caractères qui représentera l'SQL source de la seconde liste. On placera ce code sur l'événement "Après mise à jour" de la première liste. Admettons que la première liste se nomme "lst_Tous" et la seconde "lst_Selectionne".
On aura alors un code complet qui ressemble à ceci : Code : Dim ctl As Control Dim varItem As Variant Dim sSQL As String Set ctl = Me.lst_tous sSQL = "Select * from LaTable where [PK] IN (" For Each varItem In ctl.ItemsSelected sSQL = sSQL & ctl.ItemData(varItem) & "," Next varItem 'on supprime la dernière virgule sSQL = Left(sSQL, Len(sSQL) - 1) 'on ferme la parenthèse sSQL = sSQL & ")" 'on attribue la chaine à la source de la seconde liste Me.lst_selection.RowSource = sSQL
PK (primary key) représente le nom de la clé primaire.
Cordialement, Pierre (3Stone) |
|
|
Réponse n° 6 -------- le 20/06/2014 : 09:02 par lance
visiteur |
J'ai réussi, merci pour votre aide. |
|
|
sujet actif
sujet clos
Important!
Nouveau message -
Rectifier message
Clôturer sujet
Remonter
|