Suppression de donées dans une base acces

bridierb Messages postés 11 Date d'inscription mercredi 4 mars 2009 Statut Membre Dernière intervention 26 juin 2010 - 21 mai 2010 à 00:01
cs_fatyne Messages postés 1 Date d'inscription dimanche 7 novembre 2010 Statut Membre Derniè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 ?

nb. Je suis en train de m'initier à la prog.

Merci d'avance

4 réponses

bridierb Messages postés 11 Date d'inscription mercredi 4 mars 2009 Statut Membre Dernière intervention 26 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;


Youpi! Ca marche.
0
imothepe_33 Messages postés 168 Date d'inscription mardi 27 juillet 2004 Statut Membre Dernière intervention 28 novembre 2012 7
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();


Pour plus de compréhension suis ce lien : [ http://dotnet.developpez.com/cours/ado.net/]

Merci.
Only the strong survive !
0
bridierb Messages postés 11 Date d'inscription mercredi 4 mars 2009 Statut Membre Dernière intervention 26 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.....
0
cs_fatyne Messages postés 1 Date d'inscription dimanche 7 novembre 2010 Statut Membre Derniè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
0
Rejoignez-nous