Bonjour les Amis. Cela fait plus d'un mois que je crack sur un probleme de comboBox. En effet j'ai reçu a faire en remplissage automatique les Noms des marche dans mon combobox issu d'un autre formulaire. Voici comment j'ai remplir mon comboBox:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 void Fillcombo() { string connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=F:\\Stage_ap\\BD\\MontHoreb.accdb"; conn.ConnectionString = connectionString; conn.Open(); OleDbDataAdapter adapter = new OleDbDataAdapter("SELECT Code_Marche, Libelle_Marche FROM MARCHE", conn); DataTable dt = new DataTable(); adapter.Fill(dt); cmbCodeMaPh.DataSource = dt; cmbCodeMaPh.DisplayMember = "Libelle_Marche"; cmbCodeMaPh.ValueMember = "Code_Marche"; conn.Close(); }
Cependant je veux enregistrer uniquement que la clé primaire des marches. D'abord j'ai crée une classe qui contient une Methode d'enregistrement et je l'appel en cas d'un enregistrement comme vous pouvez le voir ci-dessous:
Maintenant pour le Bouton Enregistrer voici comment j'ai procédé
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
30
31
32
33
34
35
36
37
38
39
40 //Methode pour Inserer des Donnees Dans la Base de Donnees public bool Insert(PhaseClasse c) { //Creation de valeur par defaut et le parametrer a faux bool isSuccess = false; //Connection a la Base de Donnee OleDbConnection conn = new OleDbConnection(myconnstrng); try { //Creation de requette pour Inserer des Donnees string sql = "INSERT INTO PHASE (Libelle_Phase, Code_Marche) VALUES (@Libelle_Phase, @Code_Marche)"; //Creation de Commande Utilisant sql et conn OleDbCommand cmd = new OleDbCommand(sql, conn); //Creation de parameters pour ajouter des Donnees cmd.Parameters.AddWithValue("@Libelle_Phase", c.Libelle_Phase); cmd.Parameters.AddWithValue("@Code_Marche", c.Code_Marche); //Ouverture de la Connection conn.Open(); int rows = cmd.ExecuteNonQuery(); //Si la requette s'effectue avec succes la valeur de la ligne sera plus grande 0 sino cette valeur sera 0 if (rows > 0) { isSuccess = true; } else { isSuccess = false; } } catch(Exception ex) { MessageBox.Show(ex.Message); } finally { //Fermeture de la Connection conn.Close(); } return isSuccess;
Cependant on me dit qu'il une erreur sur le SelectedValue.
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 private void btnAjouterPh_Click(object sender, EventArgs e) { //Obtention des Donnees dans les Champs de Saisir c.Libelle_Phase = txtBoxLibPh.Text; c.Code_Marche =cmbCodeMaPh.SelectedValue; //Insertion des Donnees dans la Base de Donnees de Notre Application bool success =c.Insert(c); if (success == true) { //Insertion effectue avec succes MessageBox.Show("Votre Enregistrement a ete effectue avec succes.Merci"); //Call the clear methode Clear(); } else { //Enregistrement Non Effectue MessageBox.Show("Enregistrement non effectue. veuillez reprendre SVP!"); } //Load Data on DataGridView DataTable dt = c.Select(); dgvPhase.DataSource = dt; }
Voici l'erreu: Impossible de convertir implicitement le type 'object' en 'int'. Une conversion explicite existe (un cast est-il manquant*?)
pour mieux illustrer cela voici un capture d'ecran que j'ai fait:
S'il vous Plait aider moi!
Partager