Probleme avec insert into

ahmedmahdibenjemaa Messages postés 18 Date d'inscription jeudi 27 mars 2008 Statut Membre Dernière intervention 14 mai 2013 - 23 juil. 2010 à 10:53
foliv57 Messages postés 420 Date d'inscription vendredi 17 novembre 2006 Statut Membre Dernière intervention 15 juillet 2014 - 27 juil. 2010 à 19:47
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

scromania Messages postés 452 Date d'inscription dimanche 20 août 2006 Statut Membre Dernière intervention 11 janvier 2013 9
23 juil. 2010 à 11:35
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
0
foliv57 Messages postés 420 Date d'inscription vendredi 17 novembre 2006 Statut Membre Dernière intervention 15 juillet 2014 9
24 juil. 2010 à 19:52
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
0
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
27 juil. 2010 à 00:39
@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.
0
foliv57 Messages postés 420 Date d'inscription vendredi 17 novembre 2006 Statut Membre Dernière intervention 15 juillet 2014 9
27 juil. 2010 à 19:47
[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.
0
Rejoignez-nous