IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Visual Studio Discussion :

Remplir une combo en fonction d'une autre


Sujet :

Visual Studio

  1. #1
    Débutant  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Points : 353
    Points
    353
    Par défaut Remplir une combo en fonction d'une autre
    Bonjour a tous,

    Tout d'abord ma première combo est rempli de la manière suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    public NouvelleIntervention()
    		{
    			InitializeComponent();
     
    			SqlConnection connection;
    			SqlCommand command;
    			SqlDataReader rader;
     
    			connection = new SqlConnection("Data Source=DIST-5B8D87E3A9;Initial Catalog=DistribInfo;Integrated Security=SSPI");
    			command = new SqlCommand("SELECT C_NOMCLT FROM CLIENT", connection);
    			connection.Open();
    			try
    			{
    				rader = command.ExecuteReader();
    				try
    				{
    					while (rader.Read()) 
    					NomClient.Items.Add(Convert.ToString(rader["C_NOMCLT"]));
    				}
    				finally
    				{
    					rader.Close();
    				}
    			}
    			finally
    			{
    				connection.Close();
    			}
    		}
    Et je souhaiterais avoir une deuxième combo qui s'appellerais "NomContact".
    "NomContact" se remplisse selon "NomClient".
    EX : NomCLT
    fr
    gh

    Si je choissit fr, j'aimerais que "NomContact" m'affiche les nom des contacts correspondant a fr.
    Comment puis-je réaliser cela??

    En sachant que le "NumClt" est dans la table "CLIENT" et le "NomContact" se situe dans la table "CONTACT".
    Puis l'identifiant de "NumClt" se situe dans la table "CONTACT" en tant que clé étrangére.

    Merci d'avance.

  2. #2
    Membre habitué Avatar de LaNat
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    162
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Avril 2005
    Messages : 162
    Points : 164
    Points
    164
    Par défaut
    Tu mets un événement sur le selectedChange de ton premier combo et dedans tu fais le même style de remplissage que pour le premier sauf que tu rajoutes un where dans ta requête, et le critère sera la valeur récupérée dans le premier combo.

  3. #3
    Débutant  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Points : 353
    Points
    353
    Par défaut réponse à LaNat
    Désolé, tu va trouver que je suis chiant mais je n'est pas tout compris ce que ta voulu dire par :
    mets un événement sur le selectedChange de ton premier combo
    Je n'est pas de "SelectedChange" dans mon code pour le moment donc je dois le rajouter ou autre....??

    Ensuite,
    le critère sera la valeur récupérée dans le premier combo.
    pas trop compris ce que tu veux dire par là.

    Dans le "where" , je fais la jointure entre les 2 tables??
    parce que je sait pas si c'est bon mais j'avais l'idée suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT NomCtact
    FROM CONTACT RIGHT JOIN CLIENT ON CONTACT.NumClt = CLIENT.NumClt;
    qu'en pense tu??

    merci d'avance!!

  4. #4
    Membre habitué Avatar de LaNat
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    162
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Avril 2005
    Messages : 162
    Points : 164
    Points
    164
    Par défaut
    Tu cliques sur ton premier combo tu vas dans les propriétés events, tu double clique sur SelectedValueChanged et là le code apparaît.
    Tu fais la même manip que pour remplir le premier combo.
    Mais dans tu changes ta requête pour prendre en compte un paramètre supplémentaire : le contenu de ton item sélectionné dans le premier combo.
    Comme en général on ne bosse pas sur les libellés mais sur les identifiants primaires, tu dois récupérer non pas le displayMember mais le valueMember (selectedValue il me semble). A moins que tu ai géré ta table autrement et que tu bosses sur les libellés alors du coup tu récupères le selectedItem

  5. #5
    Débutant  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Points : 353
    Points
    353
    Par défaut réponse à LaNat
    Je sais que je suis chiant!!

    J'ai été dans les propriètés de la première combo mais je n'ai pas "events" et je ne trouve pas non plus "SelectedValueChanged".

    De quel Item parle-tu??

    Mes tables sont gérées de la manière suivante :
    CLIENT CONTACT
    Numclt NumContact
    NomClt NomContact
    StatutClt PrénomContact
    Nbr_Inter ................

    et je veux afficher sur la première com le "NomClt" et sur la deuxième combo le "NomContact"

    merci d'avance!!

  6. #6
    Membre habitué Avatar de LaNat
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    162
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Avril 2005
    Messages : 162
    Points : 164
    Points
    164
    Par défaut
    Je te parle des events du combo (comme un clic sur un bouton)
    Je te parle de l'item du premier combo (= valeur que tu dois récupérer pour compléter ta 2ème requête)

  7. #7
    Débutant  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Points : 353
    Points
    353
    Par défaut réponse à LaNat
    Je te parle des events du combo (comme un clic sur un bouton)
    Ben lorsque je suis en mode création, je clique droit sur "events" puis "propriétés" mais je ne trouve pas de "SelectedValueChance" !!??!!

    Je te parle de l'item du premier combo (= valeur que tu dois récupérer pour compléter ta 2ème requête)
    Dans mon projet l'item du premier combo correspond au "nomContact" donc??!! si je comprend bien!!

    merci d'avance!

  8. #8
    Membre habitué Avatar de LaNat
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    162
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Avril 2005
    Messages : 162
    Points : 164
    Points
    164
    Par défaut
    Tu dois avoir un truc qui se rapproche genre selectedIndexChanged

    Voui

  9. #9
    Débutant  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Points : 353
    Points
    353
    Par défaut réponse à LaNat
    Donc j'ai un "SelectedValue" et "SelectedItem" se trouvant dans "Données" --> "DataBlinding". Mais dans "SelectedValue" et "SelectedItem" il m'affiche "aucun" et c'est tout. Donc je vois pas trop comment faire??

    Pour ma deuxième combo je doit remettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    public NouvelleIntervention()
    		{
    			InitializeComponent();
     
    			SqlConnection connection;
    			SqlCommand command;
    			SqlDataReader rader;
     
    			connection = new SqlConnection("Data Source=DIST-5B8D87E3A9;Initial Catalog=DistribInfo;Integrated Security=SSPI");
    			command = new SqlCommand("SELECT C_NOMCLT FROM CLIENT", connection);
    			connection.Open();
    			try
    			{
    				rader = command.ExecuteReader();
    				try
    				{
    					while (rader.Read()) 
    					NomClient.Items.Add(Convert.ToString(rader["C_NOMCLT"]));
    				}
    				finally
    				{
    					rader.Close();
    				}
    			}
    			finally
    			{
    				connection.Close();
    			}
    		}
    bien entendu en changeant 2-3 truc. Mais le code pour al seconde combo, je doit l'insérer ou??

    merci d'avance.

  10. #10
    Membre habitué Avatar de LaNat
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    162
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Avril 2005
    Messages : 162
    Points : 164
    Points
    164
    Par défaut
    Ce code tu le mets dans le selectedMachinChanged que tu auras trouvé sur ton combo
    Tu récupères le nom de ton client en faisant Combo1.Text

  11. #11
    Débutant  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Points : 353
    Points
    353
    Par défaut réponse à LaNat
    Je pense avoir compris ou tu voulais que je mette mon code. En gros j'avais juste a faire un double clique sur la combo.
    Mais je voi pas trop ou je dois mettre ??

    merci d'avance!!

  12. #12
    Membre habitué Avatar de LaNat
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    162
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Avril 2005
    Messages : 162
    Points : 164
    Points
    164
    Par défaut
    Tu devrais changer de signature car à part demander je trouve que tu cherches pas beaucoup.
    J'ai pris combo1 comme exemple, il faut bien sûr que tu le renommes avec le nom de ta combo.
    combo1.Text est le texte affiché dans ta combo = nom de ton client.
    C'est donc le paramètre du where de ta requête
    req = "SELECT ... WHERE .... nomClient = " + combo1.Text

  13. #13
    Débutant  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Points : 353
    Points
    353
    Par défaut réponse à LaNat
    Je vient d'essayer tout en cherchant mais ca m'affiche pas d'erreur mais cela ne fonctionne pas.

    ma requête donne ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    command = new SqlCommand("SELECT CT_NOMCTACT FROM CONTACT Co, CLIENT Cl WHERE Co.CT_NUMCLT=Cl.C_NUMCLT AND C_NOMCLT =" + "NomClient.C_NOMCLT", connection);
    merci d'avance!!

  14. #14
    Membre habitué Avatar de LaNat
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    162
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Avril 2005
    Messages : 162
    Points : 164
    Points
    164
    Par défaut
    Si NomClient est ta combo tu doit utiliser
    NomClient.Text

  15. #15
    Débutant  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Points : 353
    Points
    353
    Par défaut réponse à LaNat
    J'avais essayé avec "NomClient.Text" mais le problème c'est que ca me bloque c'est à dire qu'il m'affiche le message ci-joint dans le fichier .doc et ça me surligne également en vert la code suivant"rader = command.ExecuteReader();"

    Je comprend pas pourquoi?? j'ai du faire une erreur peut être dans ma requête??!!

    merci d'avance!!

  16. #16
    Membre habitué Avatar de LaNat
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    162
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Avril 2005
    Messages : 162
    Points : 164
    Points
    164
    Par défaut
    Il doit y avoir une erreur dans la requête.
    Passe sur la requête avec le débugger et regarde si elle est correcte

  17. #17
    Débutant  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Points : 353
    Points
    353
    Par défaut réponse à LaNat
    J'ai essayé plusieurs fois déja le débuggage mais ca me donne rien de plus.

    Mais quand j'essaye
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT CT_NOMCTACT FROM CONTACT Co, CLIENT Cl WHERE Co.CT_NUMCLT=Cl.C_NUMCLT
    sous l'analyseur de requête de SQL Server il m'affiche bien le Numéro du contact.

    Je me demande si l'erreur ne provient pas de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AND C_NOMCLT =" + "NomClient.Text", connection);
    qui serait pas bon.

    Je sais pas ce que t'en pense!!

    Merci d'avance!!

  18. #18
    Membre habitué Avatar de LaNat
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    162
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Avril 2005
    Messages : 162
    Points : 164
    Points
    164
    Par défaut
    Effectivement il ne faut pas ajouter "NomClient.Text" mais NomClient.Text sans double quotes.
    Sinon il ta requête vaut "... where nomClient = NomClient.Text"
    Alors que tu veux "... where nomClient = x" où x est la valeur de NomClient.Text

  19. #19
    Débutant  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Points : 353
    Points
    353
    Par défaut réponse à LaNat
    J'ai déja essayé sans les doubles quotes mais c'est toujours la même.
    Je vois vraiment pas comment faire.

    Merci d'avance!!

  20. #20
    Membre habitué Avatar de LaNat
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    162
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Avril 2005
    Messages : 162
    Points : 164
    Points
    164
    Par défaut
    Est-ce que tu peux me donner la requête analysée par le debugger de Visual Studio

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. affichage d'une combo en fonction d'une autre
    Par missjack dans le forum WebDev
    Réponses: 7
    Dernier message: 08/04/2015, 13h51
  2. [PHP 5.0] Combo en fonction d'une autre
    Par walacouper dans le forum Langage
    Réponses: 4
    Dernier message: 07/05/2009, 18h29
  3. Réponses: 9
    Dernier message: 06/01/2009, 17h48
  4. remplir une combobox en fonction d'un autre
    Par mima_mine dans le forum Struts 1
    Réponses: 7
    Dernier message: 18/09/2008, 16h57
  5. Filtre d'une combo en fonction du contenu d'une autre
    Par sguedon dans le forum SharePoint
    Réponses: 3
    Dernier message: 24/06/2008, 09h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo