Problème pour remplir ma combobox avec une certaine condition

Résolu
vicelow5901 Messages postés 27 Date d'inscription vendredi 27 octobre 2006 Statut Membre Dernière intervention 7 mars 2008 - 8 juin 2007 à 09:15
cs_drahcir Messages postés 745 Date d'inscription mardi 30 novembre 2004 Statut Membre Dernière intervention 15 septembre 2009 - 8 juin 2007 à 11:05
Bonjours chers membre de VBFrance.

Donc comme je l'indiquai dans le sujet, j'ai un petit problème pour remplir une combobox. En gros j'ai une combo pour les nom des salariés (qui est rempli grâçe à la colonne Nom_salarie de ma table Salarie de ma BDD) et je voudrais remplir ma seconde combo avec le(s) prénom(s) qui correspondent au nom sélectionné dans ma combo nom. Ma requête marche sous Access mais pas sous VB mais je crois que c'est parce que j'ai mal placé ma procédure qui permet de remplir ma combox. Mais pour que vous compreniez un peu mieux je vous fournis mon code (Ne criez pas si c'est pas le top du code dans sa conception, je suis débutant ;-) :
 
 Private Sub Form_Activate()

    Call remplir_nom
    Call remplir_prenom


End Sub

Sub remplir_nom()


Dim rccombo As ADODB.Recordset
Set rccombo = New ADODB.Recordset


    ' création de la requête pour remplir la combobox
    rccombo.Open "select Nom_salarie from Salarie order by Nom_salarie", cnx, adOpenDynamic
   
    ' créer la combobox
    listenom.Clear
   
    ' remplir la combobox en exécutant la requête du dessus
    Do Until rccombo.EOF


        listenom.AddItem rccombo!Nom_salarie
        rccombo.MoveNext
   
    Loop


End Sub




Sub remplir_prenom()


Dim rccombo As ADODB.Recordset
Set rccombo = New ADODB.Recordset


    ' création de la requête pour remplir la combobox
    rccombo.Open "SELECT Salarie.Prenom_salarie From Salarie WHERE Salarie.Nom_salarie = " & listenom.Text & ", cnx, adOpenDynamic"
   
    ' créer la combobox
    listeprenom.Clear
   
    ' remplir la combobox en exécutant la requête du dessus
    Do Until rccombo.EOF


        listeprenom.AddItem rccombo!Prenom_salarie
        rccombo.MoveNext
   
    Loop
   
End Sub

Et cette requete sous access marche avec à la place de "listenom.text" une exemple de nom :

SELECT Salarie.Prenom_salarie
FROM Salarie
WHERE (((Salarie.Nom_salarie)="RICHET"));

J'espère avoir été le plus claire possible et merci d'avance!

16 réponses

fiko81 Messages postés 381 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 5 septembre 2010 3
8 juin 2007 à 10:49
Salut,
Je comprend mieux ton problème : il est clair que si tu remplit des deux combo en même temps, tu vas avoir des problèmes. Pour remplir la combo prénom, il faut que l'utilisateur est choisit une valeur dans la combo nom.
Conseil : pour détecter le choix utilisateur dans la première combo, il faut utiliser l'évenement listenom_Change ou listenom_click (ça dépend de ta configuration) et dans cette evenement tu peux remplir ta combo listeprenom.
Sinon tout ce que je t'ai dit à la base reste vrai (pour les rem)

 Fiko ;-)

La reponse vous convient pensez > Accepter <
<hr />
3
cs_drahcir Messages postés 745 Date d'inscription mardi 30 novembre 2004 Statut Membre Dernière intervention 15 septembre 2009 4
8 juin 2007 à 10:59
Qu'est ce que ça fait exactement? Ca plante? Ca fait rien?

En tous cas, je ne sais pas si c'est une erreur de copier/coller, mais il te manque un " aprés ton permier ' et ton 2ème ' et ton 2ème " sont inversés :

rccombo.Open "SELECT Salarie.Prenom_salarie From Salarie WHERE Salarie.Nom_salarie = '" & listenom.Text & "', cnx, adOpenDynamic

<hr />
@+  
3
vicelow5901 Messages postés 27 Date d'inscription vendredi 27 octobre 2006 Statut Membre Dernière intervention 7 mars 2008
8 juin 2007 à 11:01
Stooooooooooooooooooooooooooooooooooppppppp!!!


 


Ayé sa marche!!!

j'ai rajouté des "" dans ma requête,  j'ai fait Private Sub listenom_Click() et now sa marche!!!!

Merci à tous (ficko81)
3
sobullshit Messages postés 178 Date d'inscription vendredi 9 février 2007 Statut Membre Dernière intervention 8 juin 2007
8 juin 2007 à 09:40
Je dois avouer que je n'y connais rien en BDD (pas envie d'y mettre les pieds pour l'instant), mais j'ai remarqué 2-3 trucs :
1°)tu mets :

  ' créer la combobox
    listeprenom.Clear

   en fait, tu effaces juste les données qu'elle contient

2°) tu uitilises 2 sub différentes, si le nom et le prénom sont liés dans ta BDD, ça serait aps plus simple d'utiliser ce lien pour tout remplir dans une seule Sub (remplissage du nom puis du prénom associé, et ainsi de suite)

Bah en fait yavai que 2 trucs, pas 3
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
fiko81 Messages postés 381 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 5 septembre 2010 3
8 juin 2007 à 09:46
Salut,
Je dirais à première vu qu'il te manque les rem dans ta requette et tes guillements sont mal placés :
rccombo.Open "SELECT Salarie.Prenom_salarie From Salarie WHERE
Salarie.Nom_salarie = '" & listenom.Text & "'", cnx, adOpenDynamic

 Fiko ;-)

La reponse vous convient pensez > Accepter <
<hr />
0
cs_drahcir Messages postés 745 Date d'inscription mardi 30 novembre 2004 Statut Membre Dernière intervention 15 septembre 2009 4
8 juin 2007 à 09:47
Salut,

exécute ton code en "pas à pas" et met un point d'arrêt dans "remplir_prenom". As-tu la bonne valeur dans "listenom.Text"?

<hr />
@+  
0
vicelow5901 Messages postés 27 Date d'inscription vendredi 27 octobre 2006 Statut Membre Dernière intervention 7 mars 2008
8 juin 2007 à 10:20
Alors premièrement, pour répondre a sobullshit, le remplissage de la combobox listenom marche parfaitement même avec le .Clear (j'ai copié exactement le code qui était dans mon cour pour remplir une combo) et si je ne mets pas le "WHERE Salarie.Nom_salarie = " & listenom.Text & ", le remplissage de ma listeprenom se fait aussi parfaitement. Le problème est que je puisse mettre n'importe quel nom avec n'importe quel prénom, se qui est un problème :-). Ensuite, le fait de faire un sub à la place de 2, je ne vois pas se que cela peux changer mais peut etre que je me trompe. Deuxièmement, pour répondre à fiko81, le fait de mettre les guillemets comme tu m'as dit de faire ne change rien :s. Et enfin pour répondre à drahcir, je crois que le problème est que je remplis ma listeprenom au mauvais moment. En gros, à l'affichage de ma forme, la listenom se remplis mais elle n'affiche rien par défaut donc la listeprenom ne peut se remplir. Et quand je sélectionne un nom dans la listenom, la listeprenom ne remplis pas pour autant.

Merci quand même et j'espère qu'avec mes réponses, mon problème est un peu plus claire :-)
0
cs_drahcir Messages postés 745 Date d'inscription mardi 30 novembre 2004 Statut Membre Dernière intervention 15 septembre 2009 4
8 juin 2007 à 10:27
parce que ta sub "remplir_prenom" s'éxécute dans le load de ta form?

Si c'est ça, il faut y faire appel seulement lorsque tu sélectionne le nom de ton salarié.

<hr />
@+  
0
cs_drahcir Messages postés 745 Date d'inscription mardi 30 novembre 2004 Statut Membre Dernière intervention 15 septembre 2009 4
8 juin 2007 à 10:28
mais pour appuyer fiko81, je pense que les ' sont indispensables dans ta requête....

<hr />
@+  
0
vicelow5901 Messages postés 27 Date d'inscription vendredi 27 octobre 2006 Statut Membre Dernière intervention 7 mars 2008
8 juin 2007 à 10:35
Drahcir, je crois que c'est ça aussi mais je sais pas comment faire car je suis plutot débutant ;-)
0
cs_drahcir Messages postés 745 Date d'inscription mardi 30 novembre 2004 Statut Membre Dernière intervention 15 septembre 2009 4
8 juin 2007 à 10:38
alors en vb6 je ne sais pas exactement de quel évènement il s'agit (je développe en .net) mais regarde dans les évènements de "listnom".... du genre "SelectedItemChanged" ou qqch du style.

<hr />
@+  
0
sobullshit Messages postés 178 Date d'inscription vendredi 9 février 2007 Statut Membre Dernière intervention 8 juin 2007
8 juin 2007 à 10:39
Je sais bien que le .Clear n'empêche pas le remplissage de tes combobox puisqu'il sert uniquement à le vider avant remplissage pour éviter d'avoir 15fois les mêmes données lorsque tu rafraîchit. Le remplissage tu le fait avec le .AddItem (pour les bilingues c'est pas trop dur à comprendre).

Ce que fiko81 te disait, c'était de rajouté des ' (apostrophes), pas des " (guillemets). Les " yen a besoin aussi, mais pas au même endroit.
0
vicelow5901 Messages postés 27 Date d'inscription vendredi 27 octobre 2006 Statut Membre Dernière intervention 7 mars 2008
8 juin 2007 à 10:40
En gros, sa fait :

Si un nom est sélectionné dans ma listenom, alors remplir ma listeprenom avc le ou les prenom correspondant au nom.

Mais je sais pas ou le placer, quand le placer et surtout je sais pas totalement le traduire en language VB.
0
vicelow5901 Messages postés 27 Date d'inscription vendredi 27 octobre 2006 Statut Membre Dernière intervention 7 mars 2008
8 juin 2007 à 10:41
En gros, sa fait :

Si un nom est sélectionné dans ma listenom, alors remplir ma listeprenom avc le ou les prenom correspondant au nom.

Mais je sais pas ou le placer, quand le placer et surtout je sais pas totalement le traduire en language VB.
0
vicelow5901 Messages postés 27 Date d'inscription vendredi 27 octobre 2006 Statut Membre Dernière intervention 7 mars 2008
8 juin 2007 à 10:56
Alors j'ai essayé de faire ça :

Private Sub Form_Activate()


        Call remplir_nom


End Sub

Private Sub listenom_Change()


    Call remplir_prenom


End Sub

Sub remplir_prenom()


Dim rccombo As ADODB.Recordset
Set rccombo = New ADODB.Recordset


    ' création de la requête pour remplir la combobox
    rccombo.Open "SELECT Salarie.Prenom_salarie From Salarie WHERE Salarie.Nom_salarie = ' & listenom.Text & '", cnx, adOpenDynamic
   
    ' créer la combobox
    listeprenom.Clear
   
    ' remplir la combobox en exécutant la requête du dessus
    Do Until rccombo.EOF


        listeprenom.AddItem rccombo!Prenom_salarie
        rccombo.MoveNext
   
    Loop
   
End Sub

Et malheureusement sa ne marche pas :-s    :-(
0
cs_drahcir Messages postés 745 Date d'inscription mardi 30 novembre 2004 Statut Membre Dernière intervention 15 septembre 2009 4
8 juin 2007 à 11:05
pense à accepter sa réponse!!!!

<hr />
@+  
0
Rejoignez-nous