Bonjour,
Depuis quelques jours, mon application sort un défaut inédit. J'ai essayé plusieurs méthodes, cherché sur internent et les solutions proposées ne fonctionne pas.
Je gère un DataSet via une class et ce défaut survient sur plusieurs tables.
L'erreur survient aléatoirement au moment de l'update. D'après ce que j'ai compris, il s'agit d'un conflit de clé primaire entre celle attribuée par le DataSet et celle attribuée par la table, mais à l'heure actuelle, je n'ai toujours pas trouvé comment résoudre ce conflit.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50 Public Class DGV Public grille As DataGridView Dim oledbAdapter As OleDbDataAdapter Dim oledbCmdBuilder As OleDbCommandBuilder Dim ds As New DataSet Dim changes As DataSet Dim i As Integer Dim key As String Dim champsID As String Dim tableSQL As String Dim sql As String Public result As Double Sub New(ByVal table As String, ByVal conditions As String, ByVal dgv As DataGridView, ByVal formatage As String, Optional ByVal ID As String = "id") Try key = formatage grille = dgv tableSQL = table champsID = ID Connection.Open() sql = "SELECT * FROM " & table & " WHERE " & conditions oledbAdapter = New OleDbDataAdapter(sql, Connection) oledbAdapter.AcceptChangesDuringUpdate = True oledbAdapter.Fill(ds) dgv.DataSource = ds.Tables(0) ds.AcceptChanges() Connection.Close() Catch ex As Exception MsgBox("Erreur DGV " & formatage & " : " & ex.ToString) End Try End Sub Sub Update() Try Connection.Open() oledbCmdBuilder = New OleDbCommandBuilder(oledbAdapter) changes = ds.GetChanges() If changes IsNot Nothing Then oledbAdapter.Update(ds.Tables(0)) End If ds.AcceptChanges() Connection.Close() Catch ex As DBConcurrencyException MsgBox("Erreur Class DGV Update : " & ex.ToString) End Try End Sub End Class
Avez vous une idée de ce qu'il faudrait faire ?
Merci d'avance
Cordialement
Partager