probleme Delete dataset datagridview
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):
Code:
1 2 3 4 5 6
|
If DgvGroupe.CurrentRow IsNot Nothing Then
ds.Tables(0).Rows(DgvGroupe.CurrentRow.Index).Delete()
End If |
pour valider les modif (on peut ajouter, supprimer des lignes du datagridview avant de valider définitivement):
Code:
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):
Code:
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 |
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.
Merci d'avance pour vos réponses et autres éclaircicements.