Problème avec OleDb.OleDbDataAdapter

Signaler
-
 pepinonoel -
Bonjour à tous,
je code depuis un bon moment en vb.net sans problème. Mon soucis majeur est le suivant:
j'utiliser une base de donée access dont la table devoirs qui a pour propriété: id_devoir(auto_incrémente), id_matiere(clé etrangère), note, coefficient, id_etudiant, date_devoir, mention.
je fais une connexion à la base qui marche très bien, voici mon code:

dim id_matiere as integer = Val(ExtraitChamp("matiere", "id_matiere", "nom_matiere", cmbomat.Text)) je recupère id_matiere via une fonction extraitchamp qui marche très bien

Dim cnx As New OleDb.OleDbConnection
cnxbase(cnx) ' la fonction pour se connecter à la base, sa marche
query = "SELECT " & etoile & " FROM devoirs WHERE id_matiere=" & id_matiere & " AND date_devoir=#" & Format(DateTimePicker1.Value, "d/MM/yyyy") & "# AND id_etudiant=" & Val(txtidetudiant.Text) & ""
Dim sql As New OleDb.OleDbDataAdapter(query, cnx)
Dim DatSet As New DataSet()


sql.Fill(DatSet, "devoirs") ' sql est dejà déclarer dans un module public sql as OleDb.OleDbDataAdapter

If DatSet.Tables("devoirs").Rows.Count <> 0 Then
fcnxbase(cnx)
gestErreur("L'enregistrement existe déjà." & vbCrLf & "Pour éviter la redondance, veillez enregistrer des information différente.", True)
frmnotedevoir_Load(sender, e)
Exit Sub
End If

REM pas de redondance alors on enregistre

'Dim nouvligne As New DataRow
nouvligneA = DatSet.Tables("devoirs").NewRow
nouvligneA("id_matiere") = id_matiere
nouvligneA("note") = txtnote.Text
nouvligneA("coefficient") = cmbocoef.Text
nouvligneA("id_etudiant") = Val(txtidetudiant.Text)
nouvligneA("date_devoir") = Format(DateTimePicker1.Value, "dd/MM/yyyy")
nouvligneA("mention") = Mention(txtnote.Text)

DatSet.Tables("devoirs").Rows.Add(nouvligneA)
cmd = New OleDb.OleDbCommandBuilder(sql)
sql.Update(DatSet, "devoirs")

fcnxbase(cnx)
frmnotedevoir_Load(sender, e)

Catch ex As Exception
MsgBox("Une erreur s'est produite : " & ex.Message, vbInformation)
End Try

arriver à sql.update(datset,"devoirs") je rencontre un problème. code : 0x80040E14.
message : erreur de syntaxe dans l'instruction Insert INTO
j'utilise le même procéder pour enregistrer les informations dans la base qui marche bien sauf sur la table devoirs, j'arrive pas à voir le bug.
J'aimerai que vous m'aidiez.
Cordialement

1 réponse

Messages postés
56
Date d'inscription
samedi 21 février 2009
Statut
Membre
Dernière intervention
16 novembre 2019
1
Essai l'ajout avec le code suivant :

Dim SqlInsert as string="Insert Into Devoirs(Id_Matiere,Note,Coefficient,Id_Etudiant,DateDevoir,Mention) Values (@p1,@p2,@p3,@p4,@p5,@p6)"
Dim cmd as new oledbCommand(SqlInsert,Cnx)
cmd.parameters.addWithValue(@p1,Id_Matiere)
cmd.parameters.addWithValue(@p2,txtNote.text)
cmd.parameters.addWithValue(@p3,cmboCoef.text)
cmd.parameters.addWithValue(@p4,val(txtIdEtudiant.tex))
cmd.parameters.addWithValue(@p5,Format(DateTimePicker1.Value, "dd/MM/yyyy") )
cmd.parameters.addWithValue(@p6,Mention(txtnote.Text))
Try
Cnx.Open
MsgBox (Cmd.ExecuteNonQuery) & " Ligne ajoutée avec Succés")
Catch
MsgBox (Err.Description)
finally
Cnx.Close
End Try


et Supprime les ligne qui créent et modifient le NewRow
Merci et super simple, vraiment merci une fois de plus