bridierb
Messages postés11Date d'inscriptionmercredi 4 mars 2009StatutMembreDernière intervention26 juin 2010
-
21 mai 2010 à 00:01
cs_fatyne
Messages postés1Date d'inscriptiondimanche 7 novembre 2010StatutMembreDernière intervention 8 novembre 2010
-
8 nov. 2010 à 00:31
Bonjour,
Je travaille sous Visual Studio 2008 en Windows Form avec une base access.
Pour supprimer un objet dans la base j'ai écris le code suivant :
private void btn_sup_Click(object sender, EventArgs e)
{
OleDbConnection connec = new OleDbConnection();
connec.ConnectionString = co;
connec.Open();
//Suppression client
OleDbCommand cmd3 = new OleDbCommand();
cmd3.Connection = connec;
int nb2 = int.Parse(txt_sup.Text.ToString());
cmd3.CommandText = "Delete from CLIENT where id_client=nb2";
int nb = cmd3.ExecuteNonQuery();
lst_clients.Items.Clear();
{
connec.Close();
En fait je mets le N° d'ID du client que je veux supprimer dans une textbox (txt_sup) et à partir de ce N° je veux supprimer la ligne dans la base.
Mais j'ai le message d'erreur suivant sur int nb = cmd3.ExecuteNonQuery(); :
"Aucune valeur donnée pour un ou plusieurs des paramètres requis."
Quelqu'un a-t-il une idée ?
bridierb
Messages postés11Date d'inscriptionmercredi 4 mars 2009StatutMembreDernière intervention26 juin 2010 21 mai 2010 à 09:12
La nuit portant conseil, j'ai fini par trouver la solution.
En fait, le pb vient de la :
int nb2 = int.Parse(txt_sup.Text.ToString());
cmd3.CommandText = "Delete from ELEVE where id_eleve=nb2";
J'ai déclaré une variable:
int nb2 = int.Parse(txt_sup.Text.ToString());
et dans ma commande "nb2" est interpreté comme une chaine de caractère qui vaut "nb2" et non comme une variable nommée nb2.
Avec :
cmd3.CommandText = "Delete from ELEVE where id_eleve=" + nb2;
imothepe_33
Messages postés168Date d'inscriptionmardi 27 juillet 2004StatutMembreDernière intervention28 novembre 20127 21 mai 2010 à 11:26
Salut. C'est vrai que ça marche aussi comme cela mais ce n'est pas la bonne méthode. ADO .Net propose la mise en place de requêtes paramétrées que tu peux utiliser. Dans le cas d'Access, il utilise les espaces réservés avec le "?" comme identificateur des paramètres. Ta requête deviendra
int nb2 = int.Parse(txt_sup.Text.ToString());
cmd3.CommandText = "Delete from ELEVE where id_eleve=?";
cmd3.Paramaters.Add("id_eleve", OleDbType.Integer).Value = nb2;
cmd3.ExecuteNonQuery();
bridierb
Messages postés11Date d'inscriptionmercredi 4 mars 2009StatutMembreDernière intervention26 juin 2010 21 mai 2010 à 19:54
Merci pour cette réponse.
J'ai testé et obtient le message suivant :
Erreur 1 'System.Data.OleDb.OleDbCommand' ne contient pas une définition pour 'Paramaters' et aucune méthode d'extension 'Paramaters' acceptant un premier argument de type 'System.Data.OleDb.OleDbCommand' n'a été trouvée (une directive using ou une référence d'assembly est-elle manquante ?) D:\Documents de Papy\Initiation_Prog\ADO\Test\Form3.cs 90 18 ADO1
Je suppose qu'il faut d'abord créer l'objet Parameter.
Du genre:
Parameter paramId_eleve;
paramId_eleve; = new Parameter ("id", id_eleve);
Cordialement
Soyez indulgent car je n'ai pas loin de 60 ans et ce n'est pas évident pour moi d'ingurgiter tout ça. Surtout que je suis en train d'apprendre aussi le html, javascript, dom, css, etc... en même temps.
Et oui il, faut bien occuper ses journées quand on est trop vieux pour travailler et trop jeune pour avoir droit à la retraite!
En fait j'ai besoin de tout ça pour mon avenir et sortir de ce RSA de M.....
cs_fatyne
Messages postés1Date d'inscriptiondimanche 7 novembre 2010StatutMembreDernière intervention 8 novembre 2010 8 nov. 2010 à 00:31
mais c on a la base de donné sql et en conexion avec c sharp mais les variables et le conection et commande et tts son declaré sur une classe cmment on fait pour suprimé o bien de inseré par exemple 1 CLIENT dans une form speciale pour l'insertion. reponse avec mille merci