Message d'erreur

profbof - 17 avril 2013 à 02:13
 MINDONGO - 17 avril 2013 à 12:23
Bonjour je suis débutant et j'ai ce message quand je veux effacer un enregistrement...
"La génération SQL dynamique de DeleteCommand n'est pas prise en charge pour un SelectCommand qui ne retourne pas des informations de colonne clé."

ma base de données a une seule table de 68 champs

voici une partie de mon code
j'attend vos suggestion au Canada!

merci


'****OUVERTURE DE LA BASE DE DONNÉES ACCESS*******
Private Sub ouverture_BD()
Try
cnx = New OleDbConnection
cnx.ConnectionString "provider MICROSOFT.jet.oledb.4.0;DATA SOURCE = " + chemin + "clients.mdb" 'connection à la base de données
cnx.Open()
dts.Clear()

cmd = New OleDbCommand("SELECT * FROM ordinateurs") 'Création de la commande
dta = New OleDbDataAdapter(cmd) 'Création du dataadapter (dta) et on l'instancie (cmd)
cmd.Connection() = cnx 'On instancie la commande (cmd) à la connection (cnx)
dta.Fill(dts, "ordinateurs") 'On charge le dataset (dts) grace à la propriété fill du dataadapter (dta)
dtt = dts.Tables("ordinateurs") 'On charge la datatable (dtt) grace à la propriété tables du dataset (dts)
max_enregistrements = dts.Tables("ordinateurs").Rows.Count
' cnx.Close()
Catch ex As Exception
MsgBox("Erreur fichier client.mdb ! FORM:form1 PRIVATE SUB:lecture_categories")
End
End Try
End Sub

'****EFFACER UN ENREGISTREMENT*******
Private Sub B_effacer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles B_effacer.Click
sortie = MsgBox("Voulez-vous vraiment effacer cette fiche ?", vbYesNo + vbExclamation + vbDefaultButton2, "EFFACER L'ENREGISTREMENT #" + Str(Position_enregistrements))

If (sortie = 6) Then
dts.Tables("ordinateurs").Rows(Position_enregistrements).Delete() 'suppression de la ligne en cours
cmdb = New OleDbCommandBuilder(dta) 'création et exécution du commandbuilder pour mettre à jour le DataAdapter
dta.Update(dts, "ordinateurs") 'mise à jour des données du DataAdapter à partir du commandbuilder

dts.Clear() 'on vide le dataset pour le recréer avec les nouvelles données
dta.Fill(dts, "ordinateurs")
dtt = dts.Tables("ordinateurs")

max_enregistrements = dts.Tables("ordinateurs").Rows.Count
Position_enregistrements = max_enregistrements - 1
Call affichage_enregistrements()
End If
End Sub

1 réponse

Salut, est-ce que ta table à une clé primaire?


Soyons Toujours à la disposition des autres
0
Rejoignez-nous