Bonjour,
j'ai un soucis pour deleter une row ds ma base via un dataset(afficher ds une datagridview).
J'ai le message :"Impossible d'accéder via la ligne aux informations de ligne supprimées." au moment d'executer la requete.
l'insert fonctionne nickel.
pour supprimer la row du dataset ds ma winform(j'ai bien fait un delete, pas un remove et je ne fais pas accepchanges avant de valider):
pour valider les modif (on peut ajouter, supprimer des lignes du datagridview avant de valider définitivement):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 If DgvGroupe.CurrentRow IsNot Nothing Then ds.Tables(0).Rows(DgvGroupe.CurrentRow.Index).Delete() End If
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 'si le dataset a été modifié If ds.HasChanges Then If MsgBox("La liste a été modifiée." + vbCrLf + _ "Etes vous sur de vouloir enregistrer ?", _ MsgBoxStyle.YesNo, "Valider") = MsgBoxResult.Yes Then If ds.Tables(0).GetChanges IsNot Nothing Then 'insert, delete ou update les groupes en fonction de l'état de la row (RowState) ds la table du dataset grpData.SaveGroupe(ds.Tables(0)) End If End If End If
la fonction de sauvegarde qui fait un "tri" en fonction de l'état de chaque row (j'ai bien le rowstate sur deleted mais pas accés aux champs):
J'ai cherché sur le net et sur les forums sans succés concernant mon cas. Il doit y avoir une "astuce" pour le delete que je ne trouve pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 Public Function SaveGroupe(ByVal dtGroupe As DataTable) As Boolean 'pour chaque ligne de la table des groupes For Each drw As DataRow In dtGroupe.Rows 'suivant le cas de la ligne Select Case drw.RowState Case DataRowState.Added 'ajout SqlHelper.InsertData("insert into tb_grp (grp_code, grp_libelle) values ('" + drw.Item(0).ToString + "', '" + drw.Item(1).ToString + "')") Case DataRowState.Deleted 'Suppression SqlHelper.DeleteData("delete from tb_grp where grp_code= '" + drw.Item(0).ToString + "'") Case DataRowState.Modified 'Modification 'update.. Case DataRowState.Unchanged 'Inchangée 'on ne fait rien End Select Next Return True End Function
Merci d'avance pour vos réponses et autres éclaircicements.
Partager