ahmedmahdibenjemaa
Messages postés18Date d'inscriptionjeudi 27 mars 2008StatutMembreDernière intervention14 mai 2013
-
23 juil. 2010 à 10:53
foliv57
Messages postés420Date d'inscriptionvendredi 17 novembre 2006StatutMembreDernière intervention15 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)
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 :)
foliv57
Messages postés420Date d'inscriptionvendredi 17 novembre 2006StatutMembreDernière intervention15 juillet 20149 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
Mayzz
Messages postés2813Date d'inscriptionmardi 15 avril 2003StatutMembreDernière intervention 2 juin 202028 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.