Bonjour à tous,
Dans ma quête de trouver des moyens pour mettre à jour ma base Access via mon dataSet non typé, j'ai trouvé sur le forum le petit bout de code suivant et j'en profite pour remercier son auteur.
Lorsque je fais une modification d'une donnée dans mon application (dans le dataset donc), et que je m'amuse à aller changer directement dans la table access ce même enregistrement (un peu comme si un autre utilisateur avait modifié cette information via une autre instance de mon application), je recois le message suivant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 Private Sub MajBase(ByVal Adapter As OleDbDataAdapter, ByVal table As String) Connection.Open() ' Création CommandBuilder '(genere automatiquement l'update entre le dataSet et la base de donnée Dim CmdBuild As OleDbCommandBuilder CmdBuild = New OleDb.OleDbCommandBuilder(Adapter) Adapter.UpdateCommand = CmdBuild.GetUpdateCommand() Adapter.Update(DtSet, table) Connection.Close() End Sub
Ce qui en soit me parait normal, bien sûr il faut que je mette mon code dans un Try Catch et que je prévienne l'utilisateur que son information a été changée par ailleurs et normalement je dois aussi lui demander si il veut annuler sa modification ou écraser la modification de l'autre.An unhandled exception of type 'System.Data.DBConcurrencyException' occurred in System.Data.dll
Additional information: Concurrency violation: the UpdateCommand affected 0 of the expected 1 records.
Si il choisit d'écraser, comment faire ?
Partager