Mon problème se pose lors de la gestion des conflits de mise à jour d'une
base de données Access
à partir d'un DataSet via un OleDbDataAdapter, dans le cas de l'insertion de
nouvelles lignes.
Dans le cas d'une mise à jour réussie sur modification ou sur suppression de
lignes,
la propriété RowState des lignes mouvementées est bien réinitialisée à
Unchanged.
Dans le cas d'une mise à jour réussie ou non sur ajout de lignes, la
propriété
RowState des lignes mouvementées conserve la valeur Added.
Il s'ensuit qu'on ne peut se fier à cette propriété pour savoir si l'ajout
c'est bien déroulé ou non.
Exemple de mise à jour sur modification :
MesModifs = MesDonnees.Tables("TMPers").GetChanges(DataRowState.Modified)
If Not MesModifs Is Nothing Then
MaCommande = New OleDbCommand("UPDATE TMPers SET NomPers = ?, XIdLoc = ?
WHERE (IdPers = ?)", MaConnexion)
Param = New OleDbParameter
Param.SourceColumn = MesModifs.Columns("NomPers").ColumnName
MaCommande.Parameters.Add(Param)
Param = New OleDbParameter
Param.SourceColumn = MesModifs.Columns("XIdLoc").ColumnName
MaCommande.Parameters.Add(Param)
Param = New OleDbParameter
Param.SourceColumn = MesModifs.Columns("IdPers").ColumnName
MaCommande.Parameters.Add(Param)
MaConnexionTmp.UpdateCommand = MaCommande
MaConnexionTmp.Update(MesModifs)
MesModifs.Reset()
End If
Exemple de mise à jour sur ajout :
MesModifs = MesDonnees.Tables("TMPers").GetChanges(DataRowState.Added)
If Not MesModifs Is Nothing Then
MaCommande = New OleDbCommand("INSERT INTO TMPers (IdPers, NomPers,
XIdLoc) VALUES (?, ?, ?)", MaConnexion)
For Each C As DataColumn In MesModifs.Columns
Param = New OleDbParameter
Param.SourceColumn = C.ColumnName
MaCommande.Parameters.Add(Param)
Next
MaConnexionTmp.InsertCommand = MaCommande
MaConnexionTmp.Update(MesModifs)
MesModifs.Reset()
End If
Alors, voici la question finale : Qu'en est-il de cette valeur Added de
RowState ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
phrscx
Merci d'avoir lu la question, mais laisse tomber : c'était un faux problème, l'exemple est mal conçu.
phrscx
"phrscx" a écrit :
Mon problème se pose lors de la gestion des conflits de mise à jour d'une base de données Access à partir d'un DataSet via un OleDbDataAdapter, dans le cas de l'insertion de nouvelles lignes. Dans le cas d'une mise à jour réussie sur modification ou sur suppression de lignes, la propriété RowState des lignes mouvementées est bien réinitialisée à Unchanged. Dans le cas d'une mise à jour réussie ou non sur ajout de lignes, la propriété RowState des lignes mouvementées conserve la valeur Added.
Il s'ensuit qu'on ne peut se fier à cette propriété pour savoir si l'ajout c'est bien déroulé ou non.
Exemple de mise à jour sur modification :
MesModifs = MesDonnees.Tables("TMPers").GetChanges(DataRowState.Modified) If Not MesModifs Is Nothing Then MaCommande = New OleDbCommand("UPDATE TMPers SET NomPers = ?, XIdLoc = ? WHERE (IdPers = ?)", MaConnexion) Param = New OleDbParameter Param.SourceColumn = MesModifs.Columns("NomPers").ColumnName MaCommande.Parameters.Add(Param) Param = New OleDbParameter Param.SourceColumn = MesModifs.Columns("XIdLoc").ColumnName MaCommande.Parameters.Add(Param) Param = New OleDbParameter Param.SourceColumn = MesModifs.Columns("IdPers").ColumnName MaCommande.Parameters.Add(Param) MaConnexionTmp.UpdateCommand = MaCommande MaConnexionTmp.Update(MesModifs) MesModifs.Reset() End If
Exemple de mise à jour sur ajout :
MesModifs = MesDonnees.Tables("TMPers").GetChanges(DataRowState.Added) If Not MesModifs Is Nothing Then MaCommande = New OleDbCommand("INSERT INTO TMPers (IdPers, NomPers, XIdLoc) VALUES (?, ?, ?)", MaConnexion) For Each C As DataColumn In MesModifs.Columns Param = New OleDbParameter Param.SourceColumn = C.ColumnName MaCommande.Parameters.Add(Param) Next MaConnexionTmp.InsertCommand = MaCommande MaConnexionTmp.Update(MesModifs) MesModifs.Reset() End If
Alors, voici la question finale : Qu'en est-il de cette valeur Added de RowState ?
Merci d'avoir lu la question, mais laisse tomber : c'était un faux problème,
l'exemple est mal conçu.
phrscx
"phrscx" a écrit :
Mon problème se pose lors de la gestion des conflits de mise à jour d'une
base de données Access
à partir d'un DataSet via un OleDbDataAdapter, dans le cas de l'insertion de
nouvelles lignes.
Dans le cas d'une mise à jour réussie sur modification ou sur suppression de
lignes,
la propriété RowState des lignes mouvementées est bien réinitialisée à
Unchanged.
Dans le cas d'une mise à jour réussie ou non sur ajout de lignes, la
propriété
RowState des lignes mouvementées conserve la valeur Added.
Il s'ensuit qu'on ne peut se fier à cette propriété pour savoir si l'ajout
c'est bien déroulé ou non.
Exemple de mise à jour sur modification :
MesModifs = MesDonnees.Tables("TMPers").GetChanges(DataRowState.Modified)
If Not MesModifs Is Nothing Then
MaCommande = New OleDbCommand("UPDATE TMPers SET NomPers = ?, XIdLoc = ?
WHERE (IdPers = ?)", MaConnexion)
Param = New OleDbParameter
Param.SourceColumn = MesModifs.Columns("NomPers").ColumnName
MaCommande.Parameters.Add(Param)
Param = New OleDbParameter
Param.SourceColumn = MesModifs.Columns("XIdLoc").ColumnName
MaCommande.Parameters.Add(Param)
Param = New OleDbParameter
Param.SourceColumn = MesModifs.Columns("IdPers").ColumnName
MaCommande.Parameters.Add(Param)
MaConnexionTmp.UpdateCommand = MaCommande
MaConnexionTmp.Update(MesModifs)
MesModifs.Reset()
End If
Exemple de mise à jour sur ajout :
MesModifs = MesDonnees.Tables("TMPers").GetChanges(DataRowState.Added)
If Not MesModifs Is Nothing Then
MaCommande = New OleDbCommand("INSERT INTO TMPers (IdPers, NomPers,
XIdLoc) VALUES (?, ?, ?)", MaConnexion)
For Each C As DataColumn In MesModifs.Columns
Param = New OleDbParameter
Param.SourceColumn = C.ColumnName
MaCommande.Parameters.Add(Param)
Next
MaConnexionTmp.InsertCommand = MaCommande
MaConnexionTmp.Update(MesModifs)
MesModifs.Reset()
End If
Alors, voici la question finale : Qu'en est-il de cette valeur Added de
RowState ?
Merci d'avoir lu la question, mais laisse tomber : c'était un faux problème, l'exemple est mal conçu.
phrscx
"phrscx" a écrit :
Mon problème se pose lors de la gestion des conflits de mise à jour d'une base de données Access à partir d'un DataSet via un OleDbDataAdapter, dans le cas de l'insertion de nouvelles lignes. Dans le cas d'une mise à jour réussie sur modification ou sur suppression de lignes, la propriété RowState des lignes mouvementées est bien réinitialisée à Unchanged. Dans le cas d'une mise à jour réussie ou non sur ajout de lignes, la propriété RowState des lignes mouvementées conserve la valeur Added.
Il s'ensuit qu'on ne peut se fier à cette propriété pour savoir si l'ajout c'est bien déroulé ou non.
Exemple de mise à jour sur modification :
MesModifs = MesDonnees.Tables("TMPers").GetChanges(DataRowState.Modified) If Not MesModifs Is Nothing Then MaCommande = New OleDbCommand("UPDATE TMPers SET NomPers = ?, XIdLoc = ? WHERE (IdPers = ?)", MaConnexion) Param = New OleDbParameter Param.SourceColumn = MesModifs.Columns("NomPers").ColumnName MaCommande.Parameters.Add(Param) Param = New OleDbParameter Param.SourceColumn = MesModifs.Columns("XIdLoc").ColumnName MaCommande.Parameters.Add(Param) Param = New OleDbParameter Param.SourceColumn = MesModifs.Columns("IdPers").ColumnName MaCommande.Parameters.Add(Param) MaConnexionTmp.UpdateCommand = MaCommande MaConnexionTmp.Update(MesModifs) MesModifs.Reset() End If
Exemple de mise à jour sur ajout :
MesModifs = MesDonnees.Tables("TMPers").GetChanges(DataRowState.Added) If Not MesModifs Is Nothing Then MaCommande = New OleDbCommand("INSERT INTO TMPers (IdPers, NomPers, XIdLoc) VALUES (?, ?, ?)", MaConnexion) For Each C As DataColumn In MesModifs.Columns Param = New OleDbParameter Param.SourceColumn = C.ColumnName MaCommande.Parameters.Add(Param) Next MaConnexionTmp.InsertCommand = MaCommande MaConnexionTmp.Update(MesModifs) MesModifs.Reset() End If
Alors, voici la question finale : Qu'en est-il de cette valeur Added de RowState ?