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 : 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
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
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 : 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
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.