Pb datagrid et base de donnees

Résolu
cs_kakol Messages postés 180 Date d'inscription mardi 21 décembre 2004 Statut Membre Dernière intervention 12 juin 2008 - 14 juil. 2005 à 18:19
cs_kakol Messages postés 180 Date d'inscription mardi 21 décembre 2004 Statut Membre Dernière intervention 12 juin 2008 - 15 juil. 2005 à 21:39
Bonjour a tous.

J'ai dans mon appli un datagrid qui m'affiche les tables de ma bases de donnees (le choix de la table a afficher se fait par un combobox). Jusque la tout va bien.(grace a certains membres de ce site qui m'ont bien aidee).
Je voudrais pouvoir ajouter (a l'aide de textBox et d'un bouton) et supprimer des enregistrements mais je rencontre 2 problemes :

1) j'arrive a inserer des elements dans une table mais pas dans 2 tables a la fois.

string apid = textBox1.Text;
string apname = textBox2.Text;
string query = "insert into AP(AP_ID,AP_name) VALUES('" + apid.Replace("'","''") + "','" + apname.Replace("'","''") + "')";
OleDbDataAdapter myAdapter = new OleDbDataAdapter( query, myConnection );
DataSet APData = new DataSet();
myAdapter.Fill( APData );
myConnection.Close();
J'essaie de faire une 2eme requete mais rien a faire.

2) comment faire pour supprimer un enregistrement d'une table en selectionnant la ligne correspondante dans le datagrid puis en cliquant sur mon bouton supprimer.
Un paramettre important a prendre en compte : je debute avec le c# et j'ai vraiment du mal avec les bases de donnees.

Je vous remercie d'avance pour toutes vos suggestions.
Kakol

10 réponses

Moucave Messages postés 130 Date d'inscription mardi 21 novembre 2000 Statut Membre Dernière intervention 10 septembre 2008
15 juil. 2005 à 21:29
Salut kakol,

Je ne connais pas la commande c# pour travailler avec tes datagrid. Cependant tu pourrais essayer de rajouter un champ appele "number" par exemple qui serait une clef primaire de type auto increment qui te permettra de pointer les elements de ton datagrid de la facon suivante :
string cellvalue1=this.dataGrid1[iRownr,0].ToString();
string cellvalue2=this.dataGrid1[iRownr,1].ToString();
string cellvalue3=this.dataGrid1[iRownr,2].ToString();
string query = "UPDATE ta-table set AP_ID='" + cellvalue2.Replace("'","''") + "',AP_name='" + cellvalue3.Replace("'","''") + "' where number = " + cellvalue1.Replace("'","''") + "";

Bon c'est un peu triche mais je pense que ca peut marcher.
3
Fildomen Messages postés 805 Date d'inscription jeudi 22 mai 2003 Statut Membre Dernière intervention 30 octobre 2010
14 juil. 2005 à 22:23
Salut
Pour supprimer, voilà la requete:
"Delete from AP where Ap_id = xx"

NB:1) pour ton code,je pense qu'utiliser un oledbcommand sera mieux qu'un dataset
2)ton prog peut subir des "Sql injection", mieux vaut utiliser les paramètres

Bonne chance

YaoYao !!
1 + 1 = 10
0
Fildomen Messages postés 805 Date d'inscription jeudi 22 mai 2003 Statut Membre Dernière intervention 30 octobre 2010
14 juil. 2005 à 22:25
0
cs_kakol Messages postés 180 Date d'inscription mardi 21 décembre 2004 Statut Membre Dernière intervention 12 juin 2008
14 juil. 2005 à 22:59
Salut Fildomen.
Oui pour le oledbcommand je vais me renseigner.
Par contre pour la requete supprimer mon probleme c'est justement ce que je doit mettre a la place du xx dans "Delete from AP where Ap_id = xx".
En effet, je doit recuperer l'info du datagrid quand je selectionne la ligne a supprimer.
Je pense qu'il doit y avoir une commande du style dataGrid1.CurrentRowIndex (celle la c'est pour le numero de la ligne selctionnee), mais pour avoir les infos des champs de la ligne selectionnee.

merci.

*** Kakol ***
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Fildomen Messages postés 805 Date d'inscription jeudi 22 mai 2003 Statut Membre Dernière intervention 30 octobre 2010
15 juil. 2005 à 01:35
mwi, il ya un tableau des items selectionnés, mais vu que tu va selectionner qu'un item, il sera le premier dans le tableau, alors, le xxx = Convert.ToInt32( listview1.SelectedItems[0].Text)
si tt les items sont affichés dans la lsite, et par ordre, fé xxx =listview1.SelectedItems[0].Index

je suis la pour t'aider si qlq chose marcherait pas

Bonne chance

YaoYao !!
1 + 1 = 10
0
Fildomen Messages postés 805 Date d'inscription jeudi 22 mai 2003 Statut Membre Dernière intervention 30 octobre 2010
15 juil. 2005 à 01:38
ah, pour celle la , Convert.ToInt32( listview1.SelectedItems[0].Text) , c seulement si t'as les ID affichés dans la première colonne, sinon, fé Convert.ToInt32( listview1.SelectedItems[0].SubItems[y].Text) ou y = la colonne -2, par ex, la deuxième colonne,c y = 0, pcke les subitems, sont les colonnes ajoutées a celle de gauche, la principale

YaoYao !!
1 + 1 = 10
0
cs_kakol Messages postés 180 Date d'inscription mardi 21 décembre 2004 Statut Membre Dernière intervention 12 juin 2008
15 juil. 2005 à 19:59
Salut.
Merci beaucoup de m'avoir repondu.
J'ai resolu mon probleme en faisant :
int iRownr=this.dataGrid1.CurrentCell.RowNumber;
int iColnr=this.dataGrid1.CurrentCell.ColumnNumber;
string cellvalue=this.dataGrid1[iRownr,iColnr].ToString();
cela me permet de recuperer la valeur de la cellule que j'ai selectionnee dans mon datagrid.
Par contre maintenant j'aurais besoin du nom du champ de la colonne correspondant a cette cellule dans la base de donnees. Je ne sais pas si c'est bien comprehensible donc voila un exemple.
Ma table a cette tete :
AP_ID AP_name (nom des champs de la table)
123 truc
456 machin
Donc dans le datagrid quand par exemple je clique sur la case machin je voudrais recuperer le texte AP_name.
As-tu une idee?

*** Kakol ***
0
Fildomen Messages postés 805 Date d'inscription jeudi 22 mai 2003 Statut Membre Dernière intervention 30 octobre 2010
15 juil. 2005 à 20:56
hmmm, je koné pas une commande sql qui fait ca, mais si c toi qui a fé la base, tu les connais déjà alors

YaoYao !!
1 + 1 = 10
0
cs_kakol Messages postés 180 Date d'inscription mardi 21 décembre 2004 Statut Membre Dernière intervention 12 juin 2008
15 juil. 2005 à 21:16
Je me suis peut etre mal exprimee mais c'est pas une commande sql qu'il me faut mais des commandes en c#. En fait c'est pour pouvoir mettre a jour la base de donnees a partir de l'appli. Dans mon exemple l'utilisateur doit pouvoir par exemple changer "machin" en "bidule" en le modifiant dans le datagrid puis en cliquant sur un bouton Update.
Mais bon si j'y arrive pas je pense que je vais reflechir sur une autre maniere de faire.

*** Kakol ***
0
cs_kakol Messages postés 180 Date d'inscription mardi 21 décembre 2004 Statut Membre Dernière intervention 12 juin 2008
15 juil. 2005 à 21:39
Oui ca marche et en effet je pense que ca peut etre une solution si jamais je n'ai pas besoin des infos que je voulais recuperer, par la suite.
Merci a vous deux.

*** Kakol ***
0
Rejoignez-nous