Remplir 3 combobox differents par une meme table access en visual studio 2012

MoMeBe - 10 févr. 2013 à 23:17
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 - 11 févr. 2013 à 14:16
Bonjour Tous le monde
J'ai un table Access 2007 sous cette forme:
ID Désignation
01 Direction 1
0101 Sous Direction 1
010101 Service 1
010102 Service 2
010103 Service 3
0102 Sous Direction 2
010201 Service 1
010202 Service 2
010203 Service 3
02 Direction 2
0201 Sous Direction 1
020101 Service 1
020102 Service 2
020103 Service 3
0202 Sous Direction 2
020201 Service 1
020202 Service 2
020203 Service 3
03 Direction 3
0301 Sous Direction 1
030101 Service 1
030102 Service 2
030103 Service 3
0302 Sous Direction 2
030201 Service 1
030202 Service 2
030203 Service 3

Dans un Société se trouve plusieurs direction et chaque direction possède plusieurs Sous Directions ainsi chaque Sous Direction dirige plusieurs Services.

Ma Question est comment remplir un premier ComboBox qui contient la liste des Directions et après avoir sélectionner une Direction voulu, le second ComboBox doit contenir la liste des Sous Directions qui sont relatives à la direction sélectionner dans ComboBox1, puis un troisième ComboBox contenant la liste des Services qui sont relatives à la Sous Direction sélectionner dans ComboBox2.
Merci pour tous qui a lit ma question et 100000 merci pour tous qui essai de m'aider.
(en visual studio 2012)
Email: JetLibre@Live.Fr

2 réponses

salut,

tu peut faire:
selon la définition de ta ligne de commande

dim con as oledbconnecion= new oledbconnecion("provider=microsoft.jet.oledb.4.0; data source='le chemin de ta base'" 

dim cmd as new oledbcommand("select Sous_Direction from DIRECTION",con) 

dim dr as oledbdatareadeer 

con.open 
dr=cmd.executereader 
while dr.read 
combobox1.items.add(dr(0)) 
end while 
dr.close 
con.close

/code

Maintenant pour les autres tu peut faire
dim cmd as new oledbcommand("select code1 from Dire where code1=combobox1.tex",con) 

dim dr as oledbdatareadeer 

con.open 
dr=cmd.executereader 
while dr.read 
combobox1.items.add(dr(0)) 
end while 
dr.close 
con.clos


tu n'as qu'à changer

combobox1.items.add(dr(0))

selon tes emplacements
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
11 févr. 2013 à 14:16
Salut

Toutes les données dans une même table : mauvais choix.
De quel type est ton champ ID dans ta table ?
Si tu l'as déclaré numérique, ça va être encore plus difficile ...
On va supposer que ce champ est un texte.

Ta difficulté maintenant est de faire la différence entre une Direction (code à 2 chiffres), une sous-direction (code à 4 chiffres) et les services (codes à 6 chiffres)
Seconde difficulté : Dans ta Combo, stocker le Id correspond au texte affiché afin de retrouver l'ID une fois que tu auras fait le choix. Je pense que tu dois pouvoir utiliser des colonnes dans les Combo, et éventuellement, la rendre invisible à l'utilisateur.

Par chance, Access accepte des instructions ressemblant au VB6 dans ses syntaxes.
Tu peux donc essayer ceci :
Pour ne sélectionner que les Directions :
Dim maRequete As String = _
    "Select ID, [Désignation] " & _
    "  From maTable " & _
    " Where Len(ID) = 2"

Ensuite, en supposant que tu aies sélectionné une "Direction" dans ta Combo et que tu aies pu récupérer le texte de son ID dans une variable String nommée monID : Pour rechercher les sous-directions :
Dim maRequete As String = _
    "Select ID, [Désignation] " & _
    "  From maTable " & _
    " Where ID Like '" & monID & "%'" & _
    "   And Len(ID) = 4"
Ca doit pouvoir fonctionner
Je te laisse essayer, tester, et une fois que tu seras au point, facile de continuer avec les Services.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on le partage (Socrate)
0
Rejoignez-nous