Probléme dans l'ajout d'un enregistrement

Signaler
Messages postés
82
Date d'inscription
dimanche 18 février 2007
Statut
Membre
Dernière intervention
28 avril 2011
-
Messages postés
121
Date d'inscription
samedi 4 novembre 2006
Statut
Membre
Dernière intervention
1 juillet 2015
-
salut tous le monde bein je suis débutant dans vb .net, et je viens de créer un programme qui se connecte avec une base de données acces.
Lorsque je veux ajouter un enregitrement on me donne une erreur:

Erreur de syntaxe dans l'instruction INSERT INTO.
dans l 'instruction :  dta.Update(dts, "produit")

voila le code et  merci:

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles valider.Click

        'ouverture de la connection(à partir du répertoire de l'application)sur la même ligne
        cnxstr = "Provider=Microsoft.ACE.OLEDB.12.0 ; Data Source= stock.accdb"
        cnx = New OleDbConnection
        cnx.ConnectionString = cnxstr
        cnx.Open()
        'Création de la requête sql
        sql = "select produit.* from produit"

        'Création de la commande et on l'instancie (sql)
        cmd = New OleDbCommand(sql)

        'Création du dataadapter (dta) et on l'instancie (cmd)
        dta = New OleDbDataAdapter(cmd)

        'On instancie la commande (cmd) à la connection (cnx)
        cmd.Connection() = cnx

        'On charge le dataset (dts) grace à la propriété fill du dataadapter (dta)
        dta.Fill(dts, "produit")

        'On charge la datatable (dtt) grace à la propriété tables du dataset (dts)                 
        dtt = dts.Tables("ptoduit")

        'crátion d'une nouvelle ligne avec les données des textbox
        dtr = dts.Tables("produit").NewRow
        dtr("nom") = Me.nom.Text
        dtr("prix") = Me.prix.Text
        dtr("date d'ajout") = Me.datea.Text
        dtr("quantité") = Me.qte.Text

        'ajout de la ligne dans le DataSet
        dts.Tables("produit").Rows.Add(dtr)

        'création et exécution du commandbuilder pour mettre à jour le DataAdapter
        cmdb = New OleDbCommandBuilder(dta)

        'mise à jour des données du dataadapter(dta)à partir du commandbuilder (cmdb)
        dta.Update(dts, "produit")

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

7 réponses

Messages postés
121
Date d'inscription
samedi 4 novembre 2006
Statut
Membre
Dernière intervention
1 juillet 2015

Où est ta requête lol ?
Donne-la.
Messages postés
82
Date d'inscription
dimanche 18 février 2007
Statut
Membre
Dernière intervention
28 avril 2011
1
bein ce code la je l'ai pri du tutoriel dans le site, car je sais pas comment ajouter un enregistrement.
voila j'ai une base stock qui contient une table produit avec des champ n°, nom, prix, quantité
si  vous pouvez me donner une méthode qui permet d'ajouter un enregistrement svp. merci
Messages postés
121
Date d'inscription
samedi 4 novembre 2006
Statut
Membre
Dernière intervention
1 juillet 2015

Voilà c'est (je pense) la meilleure facon.
Après avoir fait la connexion :

Dim sql AsString = "INSERT INTO table (Champ1, Champ2) VALUES ( ' " & TextBox1.Text & " ', ' " & TextBox2.Text & " ' )" 'En supposant que ta clé primaire est en auto-incrément
Dim Commande AsNew OleDbCommand(sql, cnx)
Cnx.Open()
cmd.ExecuteNonQuery() 'L'ajout est effectué
Cnx.Close()
Messages postés
82
Date d'inscription
dimanche 18 février 2007
Statut
Membre
Dernière intervention
28 avril 2011
1
je fais ce que tu m'a dit mais on me donne toujourscette erreur:
Erreur de syntaxe dans l'instruction INSERT INTO.

est ce que c'est le probléme de type des champs.
Messages postés
121
Date d'inscription
samedi 4 novembre 2006
Statut
Membre
Dernière intervention
1 juillet 2015

Tu as quoi comme types de champs ?
Messages postés
82
Date d'inscription
dimanche 18 février 2007
Statut
Membre
Dernière intervention
28 avril 2011
1
bein j'ai des champs des chaîne de caractères  et  un champ de type date
Messages postés
121
Date d'inscription
samedi 4 novembre 2006
Statut
Membre
Dernière intervention
1 juillet 2015

INSERT INTO [table] (colonneEntier, colonneChaîne, colonneDate) VALUES ([l'Entier], '[la chaîne]'; #[la Date]#);

Donc,
les nombre, tu mets directement dans la requête.
les chaînes, tu mets des apostrophes.
les dates, tu mets des dièses (#)

Voilà.