Probléme dans l'ajout d'un enregistrement

cs_youma85 Messages postés 82 Date d'inscription dimanche 18 février 2007 Statut Membre Dernière intervention 28 avril 2011 - 21 avril 2008 à 15:13
desperados27 Messages postés 121 Date d'inscription samedi 4 novembre 2006 Statut Membre Dernière intervention 1 juillet 2015 - 2 mai 2008 à 11:17
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

desperados27 Messages postés 121 Date d'inscription samedi 4 novembre 2006 Statut Membre Dernière intervention 1 juillet 2015
21 avril 2008 à 16:53
Où est ta requête lol ?
Donne-la.
0
cs_youma85 Messages postés 82 Date d'inscription dimanche 18 février 2007 Statut Membre Dernière intervention 28 avril 2011 1
21 avril 2008 à 21:44
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
0
desperados27 Messages postés 121 Date d'inscription samedi 4 novembre 2006 Statut Membre Dernière intervention 1 juillet 2015
22 avril 2008 à 11:43
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()
0
cs_youma85 Messages postés 82 Date d'inscription dimanche 18 février 2007 Statut Membre Dernière intervention 28 avril 2011 1
22 avril 2008 à 20:52
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
desperados27 Messages postés 121 Date d'inscription samedi 4 novembre 2006 Statut Membre Dernière intervention 1 juillet 2015
25 avril 2008 à 09:10
Tu as quoi comme types de champs ?
0
cs_youma85 Messages postés 82 Date d'inscription dimanche 18 février 2007 Statut Membre Dernière intervention 28 avril 2011 1
1 mai 2008 à 23:54
bein j'ai des champs des chaîne de caractères  et  un champ de type date
0
desperados27 Messages postés 121 Date d'inscription samedi 4 novembre 2006 Statut Membre Dernière intervention 1 juillet 2015
2 mai 2008 à 11:17
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à.
0
Rejoignez-nous