Comment faire des listes déroulantes en cascade ?
Dans l'exemple joint, une table, une requête et un formulaire.
J'ai laissé Access choisir le noms à ma place ou presque.
Table Main
Id Autonumber
Texte01 Texte
Texte02 Texte
Texte03 Texte
Texte04 Texte
Texte05 Texte
Une requête
Dans cette requête, pour faire simple, j'ai pris tous les champs de la table.
Sur les quatre premiers champs texte, je met un critère lié aux combo du formulaire.
1 2 3 4 5 6 7
|
SELECT tblMain.Id, tblMain.Texte01, tblMain.Texte02, tblMain.Texte03, tblMain.Texte04, tblMain.Texte05
FROM tblMain
WHERE (((tblMain.Texte01) Like [Forms]![frmComboCasc]![Combo0]) AND
((tblMain.Texte02) Like [Forms]![frmComboCasc]![Combo2]) AND
((tblMain.Texte03) Like [Forms]![frmComboCasc]![Combo4]) AND
((tblMain.Texte04) Like [Forms]![frmComboCasc]![Combo6])); |
J'ai volontairement mis Like, puisque mes champs sont en texte.
Lorsque mes combo seront remplis, la requête retournera les enregistrements qui correspondent aux critères.
Le formulaire
Simple aussi, quatre listes déroulantes, et une liste pour afficher les résultats de la requête.
Les Listes déroulantes sont enchaînées en cascade.
Le choix de la première, va conditionner le contenu de la seconde et ainsi de suite.
SELECT tblMain.Texte02 FROM tblMain GROUP BY tblMain.Texte02, tblMain.Texte01 HAVING (((tblMain.Texte01)=Forms!frmComboCasc!Combo0));
Ce code se répercute sur chaque liste déroulante avec les références des listes qui changent.
Pour rafraîchir le contenu des contrôles, un tout petit requery.
1 2 3 4 5 6
| Private Sub Combo0_AfterUpdate()
Me.Combo2.Requery
Me.Combo4.Requery
Me.Combo6.Requery
Me.List10.Requery
End Sub |
1 2 3 4 5
| Private Sub Combo2_AfterUpdate()
Me.Combo4.Requery
Me.Combo6.Requery
Me.List10.Requery
End Sub |
La propriété valeur par défaut de chaque combo est "*". C'est pour cette raison que dans la requête, j'ai mis like à la place de =.
Au global, chaque choix va modifier les combo qui se trouvent en aval.
Et au final on aura dans la liste les enregistrements qui correspondent aux critères choisis.
Les valeurs introduites dans la tables ont été mises de façon aléatoire.
Toute ressemblance avec des données présentes dans une autre base de données et purement fortuite.
Ceci devrait aider certaines personnes qui rencontrent des problèmes sur le tri simple de données.
ftp://ftp-developpez.com/heureuxoli/...scadecombo.zip
Partager