DataAdapter Update

fatmaboule 9 Messages postés jeudi 25 novembre 2004Date d'inscription 13 mars 2018 Dernière intervention - 13 mars 2018 à 00:58
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
Afficher la suite 

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.