1 pièce(s) jointe(s)
Problème avec SelectedValue
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:
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:
Code:
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; |
Maintenant pour le Bouton Enregistrer voici comment j'ai procédé
Code:
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;
} |
Cependant on me dit qu'il une erreur sur le SelectedValue.
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:
Pièce jointe 447336
S'il vous Plait aider moi!
Recuperation d'une cle primaire
Problème résolue avec succès . Je mettrai la résolution plus tard. Merci pour votre aide!