DataAdapter Update

Signaler
Messages postés
9
Date d'inscription
jeudi 25 novembre 2004
Statut
Membre
Dernière intervention
13 mars 2018
-
hello a tous,

qq peut m'expliquer pourquoi l'update de fonctionne pas (Violation de l'accès concurrentiel : UpdateCommand a affecté 0 des enregistrements 1 attendus.) avec le code test suivant
il s'agit dans le cas present d'une simple db access avec une table test qui contient 3 champs "no" (autoincrement), nom (string) et prenom (string) et je suis tout seul sur mon PC (pas d'acces en parallele pour le moment!)
l'affichage de la colonne avec la cle primaire est ok (No), la boucle pour afficher les entrées également,
l'ajout fonctionne (commenté) aussi.

Par contre l'update des données et le delete d'une ligne existante plante a chaque fois


Dim TblMemberCP As String = "SELECT * FROM test;"
Dim ds As New DataSet

Try
Dim connexionX As OleDbConnection = New OleDbConnection(Sconnection)


DATblMemberCP = New OleDbDataAdapter(TblMemberCP, connexionX)
DATblMemberCP.MissingSchemaAction = MissingSchemaAction.AddWithKey


Dim bldr As New OleDbCommandBuilder(DATblMemberCP)
'DATblMemberCP.UpdateCommand = bldr.GetUpdateCommand(True)
DATblMemberCP.InsertCommand = bldr.GetInsertCommand(True)
DATblMemberCP.DeleteCommand = bldr.GetDeleteCommand(True)
'''''''''''''
DATblMemberCP.UpdateCommand = connexionX.CreateCommand()
DATblMemberCP.UpdateCommand.CommandText = "UPDATE test SET nom = @nom, prenom = @prenom WHERE No=@No;"
DATblMemberCP.UpdateCommand.Parameters.Add("@No", OleDbType.Integer, 15, "No")
DATblMemberCP.UpdateCommand.Parameters.Add("@nom", OleDbType.Char, 255, "nom")
DATblMemberCP.UpdateCommand.Parameters.Add("@prenom", OleDbType.Char, 255, "prenom")

''''''
DATblMemberCP.Fill(ds, "TblMembreCP")


Catch ex As Exception

End Try


Dim odtcpm As DataTable = ds.Tables("TblMembreCP")


'get primkey
Dim OO As DataColumn = odtcpm.PrimaryKey(0)
Debug.Print("primkey=" & OO.ColumnName)

'parcourir la table
Dim en As IEnumerator = odtcpm.Rows.GetEnumerator
en.Reset()
Do While en.MoveNext
Debug.Print(en.Current(1))
Loop
''////////////////////////////////////////////////////////////
''add data is fine...
'Try
' Dim Newline As DataRow = odtcpm.NewRow
' Newline.Item(1) = "MasterBoy" & Now.ToString
' odtcpm.Rows.Add(Newline)
'Catch ex As Exception

'End Try
''test DB Update
'Try
' 'Dim bldr As New OleDbCommandBuilder(DATblMemberCP)
' 'Debug.Print(bldr.GetUpdateCommand.CommandText)
' 'Debug.Print(bldr.GetInsertCommand.CommandText)
' 'Debug.Print(bldr.GetDeleteCommand.CommandText)
' DATblMemberCP.Update(odtcpm)
'Catch ex As Exception

'End Try
'/////////////////////////////////////////////////////////////////


'update
Try
odtcpm.Rows(1).BeginEdit()
odtcpm.Rows(1).Item("prenom") = "updatetest " & Now.ToString
odtcpm.Rows(1).EndEdit()

Catch ex As Exception

End Try
Dim odtx As DataTable = odtcpm.GetChanges(DataRowState.Modified)

'test DB Update
Try
'DATblMemberCP.Update(odtx)
DATblMemberCP.Update(ds, "TblMembreCP")
Catch ex As Exception

End Try