Suppression de donées dans une base acces

Signaler
Messages postés
11
Date d'inscription
mercredi 4 mars 2009
Statut
Membre
Dernière intervention
26 juin 2010
-
Messages postés
1
Date d'inscription
dimanche 7 novembre 2010
Statut
Membre
Dernière intervention
8 novembre 2010
-
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

Messages postés
11
Date d'inscription
mercredi 4 mars 2009
Statut
Membre
Dernière intervention
26 juin 2010

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.
Messages postés
168
Date d'inscription
mardi 27 juillet 2004
Statut
Membre
Dernière intervention
28 novembre 2012
6
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 !
Messages postés
11
Date d'inscription
mercredi 4 mars 2009
Statut
Membre
Dernière intervention
26 juin 2010

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.....
Messages postés
1
Date d'inscription
dimanche 7 novembre 2010
Statut
Membre
Dernière intervention
8 novembre 2010

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