Créer un combo box à plusieurs niveau

Fermé
Dre - 12 juin 2013 à 22:59
 Tessel75 - 13 juin 2013 à 00:43
Bonjour,

J'ai une table qui contient les éléments suivant
SCIANID
SCIANCode
SCIANTitre
FatherScianID

La colonne SCIANID est simplement un élément de numérisation, soit 1, 2, ...jusqu'à 2000.
La colonne SCIANCode sont des code avec une hierarchie comme suit:
exemple:
11
111
112
113
111211
112211
112222
113221

Je suis en train de créer un formulaire sur lequel j'aurai 3 listes déroulante:

SCIAN 1 (niveau 1, celle-ci inclurait tous les SCIANCode ayant un code à deux chiffres, soit 11,21,22,23,31, etc)

La deuxième liste déroulante je veux la nommer SCIAN 2: (niveau 2: Ici, ce que j'aimerai est qu'une fois avoir sélectionné le SCIAN 1 dans ma première liste, seulement les SCIANCode appartenant au niveau 1 apparaissent. Exemple, si je selectionne 22 dans la liste SCIAN 1, les choix disponible dans ma liste déroulante SCIAN 2 soit 221, 222, 223, etc

La troisième liste serait SCIAN 3: (niveau 3. celle-ci inclurait seulement les SCIANCode à six chiffres appartenant à la sélectionne que j'aurai fait au niveau soit niveau 1 ou 2. Exemple, si j'ai sélectionné 221 dans la liste SCIAN 2, les choix disponible qui apparaitront dans la liste SCIAN 3 serait 221111, 221112, 221113, etc.

J'ai créé une colonne, que je nomme FatherSCIAN, afin d'aller correspondante le niveau 3 au niveau2 et le niveau 2 au niveau 1.

Par contre mes codes ne fonctionne pas...

Voici ce que j'ai inclus dans la liste:

SCIAN 1: SELECT ScianID, RTRIM(ScianCode)+' - '+RTRIM(ScianTitleFr) AS CodeScian, FatherScianID FROM TblScian WHERE (FatherScianID IS NULL);

SCIAN 2: SELECT RTrim([TblScian_2].[ScianCode])+' - '+RTrim([TblScian_2].[ScianTitleFr]) AS CodeScian, TblScian_2.FatherScianID, TblScian_2.ScianID FROM (TblScian INNER JOIN TblScian AS TblScian_1 ON TblScian.ScianID=TblScian_1.FatherScianID) INNER JOIN TblScian AS TblScian_2 ON TblScian_1.ScianID=TblScian_2.FatherScianID;

SCIAN 3: SELECT TblScian_2.ScianID, RTrim([TblScian_2].[ScianCode])+' - '+RTrim([TblScian_2].[ScianTitleFr]) AS CodeScian, TblScian_2.FatherScianID FROM (TblScian INNER JOIN TblScian AS TblScian_1 ON TblScian.ScianID=TblScian_1.FatherScianID) INNER JOIN TblScian AS TblScian_2 ON TblScian_1.ScianID=TblScian_2.FatherScianID;

Dois-je inclure autre chose dans mon formulaire. Ceci je l'ai fait à partir d'un combo box.

Merci pour votre aide, en avance

A voir également:

1 réponse

Bonjour,
Tu ne peux pas avoir de sélection en cascade puisque tes requête successive ne font pas référence à la sélection qui a été faite dans le champ précédent. Il te faut une condition "Where ... CeQuiAétéSélectionnéPrécédemment" dans tes requêtes N°2 et N°3 pour que ça marche.
De plus, il ne faut pas oublier d'ajouter une commande d'actualisation de tes requêtes pour qu'elles ramènent ce que tu veux.
Bonne suite
0