Probleme avec insert into

Signaler
Messages postés
19
Date d'inscription
jeudi 27 mars 2008
Statut
Membre
Dernière intervention
14 mai 2013
-
Messages postés
420
Date d'inscription
vendredi 17 novembre 2006
Statut
Membre
Dernière intervention
15 juillet 2014
-
bonjour tous le monde,
j'ai un probleme que j'arrive pas a resoudre. le compilateur me montre cette erreur : "Erreur de syntaxe dans l'instruction INSERT INTO."
voila le code :

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
If ListBox1.SelectedItem.ToString <> "" And TextBox1.Text <> "" And TextBox2.Text <> "" And TextBox3.Text <> "" Then
Dim echdata As DataSet = New DataSet()
Dim ligne As DataRow
Dim table As DataTable
Dim sql As String = "SELECT * FROM echeancier"
command = New OleDbCommand()


con.Open()

command.CommandText = sql
adapter = New OleDbDataAdapter(command)




command.Connection = con
adapter.Fill(echdata, "echeancier")
table = echdata.Tables("echeancier")
adapter = New OleDbDataAdapter(command)


ligne = echdata.Tables("echeancier").NewRow()

ligne("banque") = Me.ListBox1.SelectedItem.ToString
ligne("echeance") = Me.DateTimePicker2.Text
ligne("date") = Me.DateTimePicker1.text
ligne("Num-fact") = Me.TextBox2.Text
ligne("fournisseur") = Me.TextBox1.Text
ligne("montant") = Me.TextBox3.Text

echdata.Tables("echeancier").Rows.Add(ligne)

commandbuilder = New OleDbCommandBuilder(adapter)



adapter.Update(echdata, "echeancier")



echdata.Clear()
adapter.Fill(echdata, "echeancier")

con.Close()
Else
MsgBox("Verifiez Vos Champs !", MsgBoxStyle.Information, "Attention")
End If

End Sub


l'erreur se declanche quand elle arrive a l'ecriture en rouge, pourtant j'ai suivi le tuto a la lettre je ne sais pas ce qui est arrivé. pour info j'utilise VS2010. y a t'il quelqu'un qui peux m'aider??


merci d'avance meme le faite d'essaye de resoudre le probleme merci encore :)

4 réponses

Messages postés
453
Date d'inscription
dimanche 20 août 2006
Statut
Membre
Dernière intervention
11 janvier 2013
10
je crois qu'il veut inseré un nouvel élément et toi tu lui dit de mettre a jour un élément existant.

Est ce que tu veux mettre a jour ou inserer?

de quel tuto tu parle si tu peux mettre le lien
merci
Messages postés
420
Date d'inscription
vendredi 17 novembre 2006
Statut
Membre
Dernière intervention
15 juillet 2014
5
Bonjour,

Vu que vous faite :
ligne = echdata.Tables("echeancier").NewRow()
echdata.Tables("echeancier").Rows.Add(ligne)


L'adapter va utiliser sa requete "InsertCommand" pour cette ligne. Or, à aucun moment vous ne définissez cette requète.

Il manque donc avant votre update quelque chose du style :
Dim insertCommand as OleDbCommand = New OleDbCommand() 
insertCommand.CommandText = "INSERT INTO XXXX VALUES XXXX"
insertCommand.Connection = con
adapter.InsertCommande = insertCommand
Messages postés
2814
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
2 juin 2020
31
@foliv > Le CommandBuilder génère des requêtes UPDATE, INSERT et DELETE en prenant comme base la requête SELECT du TableAdapter, encore faut-il que la table comporte une clé primaire et que la requête SELECT sélectionne les champs appropriés.

@ahmedmahdibenjemaa> Ton code est totalement brouillon, j'ai essayé de comprendre ce que tu cherches à faire et j'ai recréé ton code, essaye-le et dis moi si le message d'erreur survient toujours, prends en compte ce que je dis plus haut (clé primaire). Tu devrais essayer de maintenir ton code au propre, si moi, un habitué du .Net je n'arrive pas à m'y retrouver alors j'imagine ce que ca doit être pour toi. C'est très important la propreté du code, surtout dans une application de données.

        'Récupération des données de la table
        Dim Connex As New OleDbConnection("ta chaine de connexion")
        Dim Adapter As New OleDb.OleDbDataAdapter("SELECT * FROM echeancier", Connex)
        Dim CmdBuilder As New OleDb.OleDbCommandBuilder(Adapter)
        Dim Table As New DataTable
        '
        Adapter.Fill(Table)
        '
        'Ajout de la nouvelle ligne
        '
        Dim Row As DataRow = Table.NewRow

        With Row
            .Item("banque") = Me.ListBox1.SelectedItem.ToString
            .Item("echeance") = Me.DateTimePicker2.Text
            .Item("date") = Me.DateTimePicker1.text
            .Item("Num-fact") = Me.TextBox2.Text
            .Item("fournisseur") = Me.TextBox1.Text
            .Item("montant") = Me.TextBox3.Text
        End With

        Table.Rows.Add(Row)

        Adapter.Update(Table)

Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
Messages postés
420
Date d'inscription
vendredi 17 novembre 2006
Statut
Membre
Dernière intervention
15 juillet 2014
5
[quote="Mayzz"]Le CommandBuilder génère des requêtes UPDATE, INSERT et DELETE en prenant comme base la requête SELECT du TableAdapter/quote

Arf, désolé, je ne connaissais pas le CommandeBuilder. Toutes mes excuses pour l'intox.