Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

PB : Suppression de rows dans un Dataset qui n'affecte pas GetChanges :-(

2 réponses
Avatar
Cédric Girard
Bonjour et meilleurs voeux à toutes et à tous.

Je rencontre un problème bizarre dans un Dataset dans lequel je supprime des
lignes (dans son unique table).

Cette table est mappée à une grille dont la seconde colonne contient un
champs booléen qui peut être mis à VRAI par l'utilisateur si la ligne doit
être supprimée.

Sur validation de la "saisie" je fais donc une boucle de la dernière ligne à
la première (pour éviter le décalage des n° de lignes lors de la
suppression) et procède à la suppression des lignes marquées. De visu à
l'écran tout se passe bien (les lignes sont bien supprimées dans la grille)

Le hic c'est que cette suppression n'affecte pas le Dataset (aucune ligne
détectée comme effacée par HasChanges !)

Voici mon code :


Dim _Rw As DataRow 'Objet ligne de
données
Dim _NbRows As Int32 = dsTrav.Tables(0).Rows.Count - 1 'Nombre de
lignes
For _Cpt As Int32 = _NbRows To 0 Step -1
'De la dernière à la première pour éviter les pbs d'indice décalés
_Rw = dsTrav.Tables(0).Rows(_Cpt)
If _Rw(1) Then
'Marquée à la suppression dont acte
dsTrav.Tables(0).Rows(_Cpt).Delete()
End If
Next _Cpt

MsgBox("Lignes effacées = " &
dsTrav.HasChanges(DataRowState.Deleted).ToString) '<<< ICI RENVOIE FALSE !



Auriez-vous une explication ? Je peux assez facilement contourner le
problème autrement mais c'est bien dommage de ne pouvoir utiliser cette
fonctionnalités !!!

Je souhaite les lignes supprimées grâce au Dataset obtenable avec
GetChanges(DataRowState.Deleted) pour un traitement annexe, c'est impératif.


--
Cédric Girard
OCERA CFGA (Aube)
Mon site perso : http://www.mainecoon.fr

2 réponses

Avatar
Chris
Cédric Girard a écrit :
Bonjour et meilleurs voeux à toutes et à tous.

Je rencontre un problème bizarre dans un Dataset dans lequel je supprime des
lignes (dans son unique table).

Cette table est mappée à une grille dont la seconde colonne contient un
champs booléen qui peut être mis à VRAI par l'utilisateur si la ligne doit
être supprimée.

Sur validation de la "saisie" je fais donc une boucle de la dernière ligne à
la première (pour éviter le décalage des n° de lignes lors de la
suppression) et procède à la suppression des lignes marquées. De visu à
l'écran tout se passe bien (les lignes sont bien supprimées dans la grille)

Le hic c'est que cette suppression n'affecte pas le Dataset (aucune ligne
détectée comme effacée par HasChanges !)

Voici mon code :


Dim _Rw As DataRow 'Objet ligne de
données
Dim _NbRows As Int32 = dsTrav.Tables(0).Rows.Count - 1 'Nombre de
lignes
For _Cpt As Int32 = _NbRows To 0 Step -1
'De la dernière à la première pour éviter les pbs d'indice décalés
_Rw = dsTrav.Tables(0).Rows(_Cpt)
If _Rw(1) Then
'Marquée à la suppression dont acte
dsTrav.Tables(0).Rows(_Cpt).Delete()
End If
Next _Cpt

MsgBox("Lignes effacées = " &
dsTrav.HasChanges(DataRowState.Deleted).ToString) '<<< ICI RENVOIE FALSE !



Auriez-vous une explication ? Je peux assez facilement contourner le
problème autrement mais c'est bien dommage de ne pouvoir utiliser cette
fonctionnalités !!!

Je souhaite les lignes supprimées grâce au Dataset obtenable avec
GetChanges(DataRowState.Deleted) pour un traitement annexe, c'est impératif.




essaie de mettre MonDataSet.AcceptChanges apres MonDataset.Delete
Avatar
Cédric Girard
Non, je ne peux (et ne veux) pas !

Car le but de ma manoeuvre, c'est justement de pouvoir ensuite accéder aux
lignes supprimées via GetChanges !!! Si je fais un "Acceptchanges" mon
GetChanges ne renverra plus rien (dixit la doc DotNet)

:'-(

--
Cédric Girard
OCERA CFGA (Aube)
Mon site perso : http://www.mainecoon.fr


"Chris" a écrit dans le message de news:

Cédric Girard a écrit :
Bonjour et meilleurs voeux à toutes et à tous.

Je rencontre un problème bizarre dans un Dataset dans lequel je supprime
des lignes (dans son unique table).

Cette table est mappée à une grille dont la seconde colonne contient un
champs booléen qui peut être mis à VRAI par l'utilisateur si la ligne
doit être supprimée.

Sur validation de la "saisie" je fais donc une boucle de la dernière
ligne à la première (pour éviter le décalage des n° de lignes lors de la
suppression) et procède à la suppression des lignes marquées. De visu à
l'écran tout se passe bien (les lignes sont bien supprimées dans la
grille)

Le hic c'est que cette suppression n'affecte pas le Dataset (aucune ligne
détectée comme effacée par HasChanges !)

Voici mon code :


Dim _Rw As DataRow 'Objet ligne
de données
Dim _NbRows As Int32 = dsTrav.Tables(0).Rows.Count - 1 'Nombre de
lignes
For _Cpt As Int32 = _NbRows To 0 Step -1
'De la dernière à la première pour éviter les pbs d'indice décalés
_Rw = dsTrav.Tables(0).Rows(_Cpt)
If _Rw(1) Then
'Marquée à la suppression dont acte
dsTrav.Tables(0).Rows(_Cpt).Delete()
End If
Next _Cpt

MsgBox("Lignes effacées = " &
dsTrav.HasChanges(DataRowState.Deleted).ToString) '<<< ICI RENVOIE FALSE
!



Auriez-vous une explication ? Je peux assez facilement contourner le
problème autrement mais c'est bien dommage de ne pouvoir utiliser cette
fonctionnalités !!!

Je souhaite les lignes supprimées grâce au Dataset obtenable avec
GetChanges(DataRowState.Deleted) pour un traitement annexe, c'est
impératif.




essaie de mettre MonDataSet.AcceptChanges apres MonDataset.Delete