Problème pour remplir ma combobox avec une certaine condition [Résolu]

vicelow5901 27 Messages postés vendredi 27 octobre 2006Date d'inscription 7 mars 2008 Dernière intervention - 8 juin 2007 à 09:15 - Dernière réponse : cs_drahcir 745 Messages postés mardi 30 novembre 2004Date d'inscription 15 septembre 2009 Dernière intervention
- 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!
Afficher la suite 

Votre réponse

16 réponses

Meilleure réponse
fiko81 381 Messages postés vendredi 24 septembre 2004Date d'inscription 5 septembre 2010 Dernière intervention - 8 juin 2007 à 10:49
3
Merci
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 />

Merci fiko81 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 94 internautes ce mois-ci

Commenter la réponse de fiko81
Meilleure réponse
cs_drahcir 745 Messages postés mardi 30 novembre 2004Date d'inscription 15 septembre 2009 Dernière intervention - 8 juin 2007 à 10:59
3
Merci
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 />
@+  

Merci cs_drahcir 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 94 internautes ce mois-ci

Commenter la réponse de cs_drahcir
Meilleure réponse
vicelow5901 27 Messages postés vendredi 27 octobre 2006Date d'inscription 7 mars 2008 Dernière intervention - 8 juin 2007 à 11:01
3
Merci
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)

Merci vicelow5901 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 94 internautes ce mois-ci

Commenter la réponse de vicelow5901
sobullshit 178 Messages postés vendredi 9 février 2007Date d'inscription 8 juin 2007 Dernière intervention - 8 juin 2007 à 09:40
0
Merci
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
Commenter la réponse de sobullshit
fiko81 381 Messages postés vendredi 24 septembre 2004Date d'inscription 5 septembre 2010 Dernière intervention - 8 juin 2007 à 09:46
0
Merci
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 />
Commenter la réponse de fiko81
cs_drahcir 745 Messages postés mardi 30 novembre 2004Date d'inscription 15 septembre 2009 Dernière intervention - 8 juin 2007 à 09:47
0
Merci
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 />
@+  
Commenter la réponse de cs_drahcir
vicelow5901 27 Messages postés vendredi 27 octobre 2006Date d'inscription 7 mars 2008 Dernière intervention - 8 juin 2007 à 10:20
0
Merci
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 :-)
Commenter la réponse de vicelow5901
cs_drahcir 745 Messages postés mardi 30 novembre 2004Date d'inscription 15 septembre 2009 Dernière intervention - 8 juin 2007 à 10:27
0
Merci
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 />
@+  
Commenter la réponse de cs_drahcir
cs_drahcir 745 Messages postés mardi 30 novembre 2004Date d'inscription 15 septembre 2009 Dernière intervention - 8 juin 2007 à 10:28
0
Merci
mais pour appuyer fiko81, je pense que les ' sont indispensables dans ta requête....

<hr />
@+  
Commenter la réponse de cs_drahcir
vicelow5901 27 Messages postés vendredi 27 octobre 2006Date d'inscription 7 mars 2008 Dernière intervention - 8 juin 2007 à 10:35
0
Merci
Drahcir, je crois que c'est ça aussi mais je sais pas comment faire car je suis plutot débutant ;-)
Commenter la réponse de vicelow5901
cs_drahcir 745 Messages postés mardi 30 novembre 2004Date d'inscription 15 septembre 2009 Dernière intervention - 8 juin 2007 à 10:38
0
Merci
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 />
@+  
Commenter la réponse de cs_drahcir
sobullshit 178 Messages postés vendredi 9 février 2007Date d'inscription 8 juin 2007 Dernière intervention - 8 juin 2007 à 10:39
0
Merci
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.
Commenter la réponse de sobullshit
vicelow5901 27 Messages postés vendredi 27 octobre 2006Date d'inscription 7 mars 2008 Dernière intervention - 8 juin 2007 à 10:40
0
Merci
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.
Commenter la réponse de vicelow5901
vicelow5901 27 Messages postés vendredi 27 octobre 2006Date d'inscription 7 mars 2008 Dernière intervention - 8 juin 2007 à 10:41
0
Merci
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.
Commenter la réponse de vicelow5901
vicelow5901 27 Messages postés vendredi 27 octobre 2006Date d'inscription 7 mars 2008 Dernière intervention - 8 juin 2007 à 10:56
0
Merci
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    :-(
Commenter la réponse de vicelow5901
cs_drahcir 745 Messages postés mardi 30 novembre 2004Date d'inscription 15 septembre 2009 Dernière intervention - 8 juin 2007 à 11:05
0
Merci
pense à accepter sa réponse!!!!

<hr />
@+  
Commenter la réponse de cs_drahcir

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.