Problème avec une liste déroulante

cs_flippaeti Messages postés 4 Date d'inscription mardi 25 novembre 2008 Statut Membre Dernière intervention 7 juin 2009 - 5 juin 2009 à 15:07
cs_Robert33 Messages postés 834 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 14 janvier 2017 - 8 juin 2009 à 07:36
Bonjour,

J'aurai aimer avoir votre aide pour trouver la résolution d'une erreur. Je fais une application pour une école de danse afin de permettre l'inscription de membre à des stages de danse. Lorsque je séléctionne un stage de danse il m'affiche les membres qui ne sont pas encore inscrit au stage, lorsque je séléctionne un membre à inscrire dans la liste déroulante il m'inscrit le dernier membre de la liste et non celui que j'ai séléctionner...

Voici le code de la page

using System;




using




System.Collections.Generic;



using




System.ComponentModel;



using




System.Data;



using




System.Data.SqlClient;



using




System.Drawing;



using




System.Text;



using




System.Windows.Forms;



namespace




application_stage{



public





partial





class





Inscription

:


Form


{








public

Inscription(){

InitializeComponent();

}

 



//Déclaration privée








private





SqlConnection

cn =


new





SqlConnection

();



private





SqlDataReader

dr;



private





SqlDataReader

dr2;



private





SqlDataReader

dr3;



private





SqlDataReader

dr4;



private





SqlCommand

cde =


new





SqlCommand

();



private





int

num_stage;



private





int

num_danseur;




//----------------------------------------------------------------------------------











//Initialisation Inscription//----------------------------------------------------------------------------------










private





void

Inscription_Load(


object

sender,


EventArgs

e){

cde.CommandText =



"select * from STAGE where Nb_Inscrit < Nb_Total_Participant"

;cde.Connection =



Global

.cn;dr = cde.ExecuteReader();



if

(dr.HasRows)



while

(dr.Read())cb_QuelStage.Items.Add(dr[



"LIBELLE_STAGE"

].ToString());dr.Close();

}




//----------------------------------------------------------------------------------











//Choix stage : partie 1//----------------------------------------------------------------------------------










public





void

regenere(){
cde.CommandText "select * from STAGE where LIBELLE_STAGE '"

+ cb_QuelStage.Text +


"'"

;dr2 = cde.ExecuteReader();



if

(dr2.Read()){

tb_aMaxi.Text = dr2[



"AGE_MAX"

].ToString();tb_aMini.Text = dr2[



"AGE_MIN"

].ToString();tb_dDeb.Text = dr2[



"DATE_DEBUT"

].ToString();tb_nbjours.Text = dr2[



"NB_JOUR"

].ToString();tb_NbInscrit.Text = dr2[



"NB_INSCRIT"

].ToString();tb_PrixSt.Text = dr2[



"PRIX_STAGE"

].ToString();num_stage =



int

.Parse(dr2[


"NUMSTAGE"

].ToString());}

dr2.Close();

}



private





void

cb_QuelStage_SelectedIndexChanged(


object

sender,


EventArgs

e){

regenere();




//---------------------------------------------------------------------------











//choix de stage : partie 2//---------------------------------------------------------------------------




cde.CommandText "select NUMDANSEUR, NOM_DANSEUR from DANSEUR where NUMDANSEUR not in (select NUMDANSEUR from INSCRIT, STAGE where INSCRIT.NUMSTAGE STAGE.NUMSTAGE and LIBELLE_STAGE = '"

+ cb_QuelStage.Text +


"')"

;dr3 = cde.ExecuteReader();

cb_NomPart.Items.Clear();



while

(dr3.Read()){

cb_NomPart.Items.Add(dr3[



"NOM_DANSEUR"

].ToString());num_danseur =



int

.Parse(dr3[


"NUMDANSEUR"

].ToString()); }

dr3.Close();

}




//----------------------------------------------------------------------------------











//Le prénom !//----------------------------------------------------------------------------------










private





void

cb_NomPart_SelectedIndexChanged(


object

sender,


EventArgs

e){

cde.CommandText =



"select PRENOM_DANSEUR from DANSEUR where NOM_DANSEUR= '"

+ cb_NomPart.Text +


"'"

;dr4 = cde.ExecuteReader();



if

(dr4.Read()){

tb_PrenomPart.Text = dr4[



"PRENOM_DANSEUR"

].ToString(); }

dr4.Close();

}



private





void

bt_ValiderInscri_Click(


object

sender,


EventArgs

e){



try


{


cde.CommandText =





"insert into INSCRIT (NUMDANSEUR, NUMSTAGE) values ('"

+ num_danseur +


"', '"

+ num_stage +


"')"

;cde.ExecuteNonQuery();



MessageBox

.Show(


"It's Good"

);cb_NomPart.Text =



""

;tb_PrenomPart.Text =



""

;regenere();

}



catch

(


Exception

ex){



MessageBox

.Show(


"erreur:"

+ ex.Message);

}

}



private





void

button1_Click(


object

sender,


EventArgs

e){



this

.Close();}

}

}

Merci d'avance

3 réponses

cs_Robert33 Messages postés 834 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 14 janvier 2017 33
6 juin 2009 à 08:40
Bonjour,
tu nous as bien expliqué ton programme, mais tu ne nous dis rien sur l'erreur.
Comment veux-tu que l'on t'aide ?

C# is amazing, enjoy it!
0
cs_flippaeti Messages postés 4 Date d'inscription mardi 25 novembre 2008 Statut Membre Dernière intervention 7 juin 2009
7 juin 2009 à 15:23
lorsque je sélectionne un membre à inscrire dans la liste déroulante il
m'inscrit le dernier membre de la liste et non celui que j'ai sélectionner...
0
cs_Robert33 Messages postés 834 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 14 janvier 2017 33
8 juin 2009 à 07:36
Bonjour,

En effet, dans ta méthode bt_ValiderInscri_Click tu inscrits toujour le stage 'num_stage' qui lui n'est initialisé que dans la méthode regenere appellée lors du changement d'index (cb_QuelStage_SelectedIndexChanged)
 Mais cette méthode mémorise le dernier stage de la liste  num_stage =  int .Parse(dr2[ "NUMSTAGE" ].ToString());

alors qu'il aurait fallu prendre l'index du stage selectionné par l'utilisateur (cb_QuelStage.SelectedIndex);

C# is amazing, enjoy it!
0
Rejoignez-nous