Problème pour remplir ma combobox avec une certaine condition

Résolu
Signaler
Messages postés
27
Date d'inscription
vendredi 27 octobre 2006
Statut
Membre
Dernière intervention
7 mars 2008
-
Messages postés
745
Date d'inscription
mardi 30 novembre 2004
Statut
Membre
Dernière intervention
15 septembre 2009
-
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

Messages postés
381
Date d'inscription
vendredi 24 septembre 2004
Statut
Membre
Dernière intervention
5 septembre 2010
3
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 />
Messages postés
745
Date d'inscription
mardi 30 novembre 2004
Statut
Membre
Dernière intervention
15 septembre 2009
4
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 />
@+  
Messages postés
27
Date d'inscription
vendredi 27 octobre 2006
Statut
Membre
Dernière intervention
7 mars 2008

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)
Messages postés
178
Date d'inscription
vendredi 9 février 2007
Statut
Membre
Dernière intervention
8 juin 2007

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
Messages postés
381
Date d'inscription
vendredi 24 septembre 2004
Statut
Membre
Dernière intervention
5 septembre 2010
3
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 />
Messages postés
745
Date d'inscription
mardi 30 novembre 2004
Statut
Membre
Dernière intervention
15 septembre 2009
4
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 />
@+  
Messages postés
27
Date d'inscription
vendredi 27 octobre 2006
Statut
Membre
Dernière intervention
7 mars 2008

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 :-)
Messages postés
745
Date d'inscription
mardi 30 novembre 2004
Statut
Membre
Dernière intervention
15 septembre 2009
4
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 />
@+  
Messages postés
745
Date d'inscription
mardi 30 novembre 2004
Statut
Membre
Dernière intervention
15 septembre 2009
4
mais pour appuyer fiko81, je pense que les ' sont indispensables dans ta requête....

<hr />
@+  
Messages postés
27
Date d'inscription
vendredi 27 octobre 2006
Statut
Membre
Dernière intervention
7 mars 2008

Drahcir, je crois que c'est ça aussi mais je sais pas comment faire car je suis plutot débutant ;-)
Messages postés
745
Date d'inscription
mardi 30 novembre 2004
Statut
Membre
Dernière intervention
15 septembre 2009
4
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 />
@+  
Messages postés
178
Date d'inscription
vendredi 9 février 2007
Statut
Membre
Dernière intervention
8 juin 2007

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.
Messages postés
27
Date d'inscription
vendredi 27 octobre 2006
Statut
Membre
Dernière intervention
7 mars 2008

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.
Messages postés
27
Date d'inscription
vendredi 27 octobre 2006
Statut
Membre
Dernière intervention
7 mars 2008

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.
Messages postés
27
Date d'inscription
vendredi 27 octobre 2006
Statut
Membre
Dernière intervention
7 mars 2008

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    :-(
Messages postés
745
Date d'inscription
mardi 30 novembre 2004
Statut
Membre
Dernière intervention
15 septembre 2009
4
pense à accepter sa réponse!!!!

<hr />
@+