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.

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

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

Si il choisit d'écraser, comment faire ?