OVH Cloud OVH Cloud

Suppression dans un dataset

5 réponses
Avatar
Thierry
Bonjour,

J'ai un problème simple :
J'ai un datagrid lié à dataset basé sur une base Access.
Lorsque je supprime un enregistrement dans le dataset,
l'enregistrement disparaît bien de mon datagrid, mais pas de la base.
Quand je ferme et rouvre mon appli, évidemment l'enregistrement est toujours
là.

Je fais bien un update de mon dataadapter après la suppression.

Merci pour votre aide.

5 réponses

Avatar
Patrick Philippot
Thierry wrote:
J'ai un problème simple :
J'ai un datagrid lié à dataset basé sur une base Access.
Lorsque je supprime un enregistrement dans le dataset,
l'enregistrement disparaît bien de mon datagrid, mais pas de la base.
Quand je ferme et rouvre mon appli, évidemment l'enregistrement est
toujours là.

Je fais bien un update de mon dataadapter après la suppression.



Bonjour,

Utilisez vous Row.Delete ou Rows.Remove? Le résultat n'est pas du tout
le même. Remove retire le record de la collections Rows alors que Delete
ne fait que marquer le record comme deleted. Selon que vous allez faire
un AcceptChanges ou un RejectChanges, l'impact sur BD est différent. Je
vous conseille fortement la lecture d'un article très complet sur ce
point:

http://www.knowdotnet.com/articles/datasetmerge.html

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr
Avatar
Thierry
Ok !

J'ai compris mon erreur.
En effet, j'utilisais la méthode Remove

Merci.

Thierry.

"Patrick Philippot" wrote:

Thierry wrote:
> J'ai un problème simple :
> J'ai un datagrid lié à dataset basé sur une base Access.
> Lorsque je supprime un enregistrement dans le dataset,
> l'enregistrement disparaît bien de mon datagrid, mais pas de la base.
> Quand je ferme et rouvre mon appli, évidemment l'enregistrement est
> toujours là.
>
> Je fais bien un update de mon dataadapter après la suppression.

Bonjour,

Utilisez vous Row.Delete ou Rows.Remove? Le résultat n'est pas du tout
le même. Remove retire le record de la collections Rows alors que Delete
ne fait que marquer le record comme deleted. Selon que vous allez faire
un AcceptChanges ou un RejectChanges, l'impact sur BD est différent. Je
vous conseille fortement la lecture d'un article très complet sur ce
point:

http://www.knowdotnet.com/articles/datasetmerge.html

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr





Avatar
DP
Bonjour,

J'ai le même problème avec le code suivant :

LigneChoisie As Integer
LigneChoisie = (DataGridListeActes.CurrentRowIndex)
Dim myRow As DataRow
myRow = dtsListeActes.Tables(strTable).Rows(LigneChoisie)
Me.dtsListeActes.Tables(strTable).Rows.Remove(myRow)
Me.odaListeActes.Update(dtsListeActes, strTable)

et j'avoue ne pas bien comprendre d'ou vient l'erreur.
Pouvez-vous m'aider?

Merci

DP
Avatar
Thierry
Bonjour,

La méthode Remove enlève un Datarow de la collection Rows,
mais elle ne supprime pas la ligne dans la table.

Il faut donc utiliser la méthode Delete du DataAdapter, ou directement une
Commande Delete (SQL).

Regarde bien l'aide sur les méthodes remove et delete pour plus d'infos.

Thierry.

"DP" wrote:

Bonjour,

J'ai le même problème avec le code suivant :

LigneChoisie As Integer
LigneChoisie = (DataGridListeActes.CurrentRowIndex)
Dim myRow As DataRow
myRow = dtsListeActes.Tables(strTable).Rows(LigneChoisie)
Me.dtsListeActes.Tables(strTable).Rows.Remove(myRow)
Me.odaListeActes.Update(dtsListeActes, strTable)

et j'avoue ne pas bien comprendre d'ou vient l'erreur.
Pouvez-vous m'aider?

Merci

DP





Avatar
DP
Bonsoir,

Je pensais que la méthode Update du DataAdapter prenait en charge l'ajout,
la modification et la suppression.
Je l'utilise pour ajouter des enregistrements sans problème alors que j'ai
ce problème de mise à jour de la base sous-jacente pour les modifications ou
les suppressions.
Je tourne en rond.

Merci de votre aide

DP