[vb.net/sql] insertion de donnée
Résolu
Doom_aok
Messages postés
46
Date d'inscription
Statut
Membre
Dernière intervention
-
Doom_aok Messages postés 46 Date d'inscription Statut Membre Dernière intervention -
Doom_aok Messages postés 46 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
je veux inserer des données à partir d'un formulaire windows crée en vb (a l'aide des textbox)
voila mon code
Imports System.Data
Imports System.Data.SqlClient
Imports System.Data.Common.DbCommand
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim con As New SqlConnection
con.ConnectionString = ("data source=.;initial catalog=Commerce;Integrated Security=SSPI")
con.Open()
(**) Dim cmd As New SqlCommand("insert client values"(Me.TextBox1.Text & ", " & Me.TextBox2.Text & ", " & Me.TextBox3.Text & ", " & Me.TextBox4.Text & ", " & Me.TextBox5.Text), con)
Dim affectedrows As Integer = cmd.ExecuteNonQuery()
con.Close()
End Sub
End Class
kan j'execute, j'ai cette exception au niveau de la ligne (**)
"La conversion de la chaîne ", , , , " en type 'Integer' n'est pas valide"
je ne sais pas vraiment ce que je dois faire dans ce cas
j'espere que vous allez m'aider a trouver l'erreur
merci d'avance
je veux inserer des données à partir d'un formulaire windows crée en vb (a l'aide des textbox)
voila mon code
Imports System.Data
Imports System.Data.SqlClient
Imports System.Data.Common.DbCommand
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim con As New SqlConnection
con.ConnectionString = ("data source=.;initial catalog=Commerce;Integrated Security=SSPI")
con.Open()
(**) Dim cmd As New SqlCommand("insert client values"(Me.TextBox1.Text & ", " & Me.TextBox2.Text & ", " & Me.TextBox3.Text & ", " & Me.TextBox4.Text & ", " & Me.TextBox5.Text), con)
Dim affectedrows As Integer = cmd.ExecuteNonQuery()
con.Close()
End Sub
End Class
kan j'execute, j'ai cette exception au niveau de la ligne (**)
"La conversion de la chaîne ", , , , " en type 'Integer' n'est pas valide"
je ne sais pas vraiment ce que je dois faire dans ce cas
j'espere que vous allez m'aider a trouver l'erreur
merci d'avance
A voir également:
- [vb.net/sql] insertion de donnée
- Insertion sommaire word - Guide
- Touche insertion clavier - Guide
- Insertion filigrane word - Guide
- Insertion liste déroulante excel - Guide
- Insertion signature word - Guide
22 réponses
salut polux :-)
jspr ke ca va :)
voila j'ai trouvé l'erreur que j'avais au niveau de l'ajout
l'erreur été au niveau de la requete : ( " & Me.TextBox1.Text & ", " & Me.TextBox2.Text & ", " & Me.TextBox3.Text & ", " & Me.TextBox4.Text & ", " & Me.TextBox5.Text & ")" (syntaxe fausse)
& Me.TextBox1.Text & ", ' " & Me.TextBox2.Text & " ', ' " & Me.TextBox3.Text & " ', ' " & Me.TextBox4.Text & " ', ' " & Me.TextBox5.Text & " ' ) ", con) (syntaxe correct)
il fallait mettre les simples cotes pour les valeur varchar
c evident n'est ce pas :s mais on a pas fait attention
jspr ke ca va :)
voila j'ai trouvé l'erreur que j'avais au niveau de l'ajout
l'erreur été au niveau de la requete : ( " & Me.TextBox1.Text & ", " & Me.TextBox2.Text & ", " & Me.TextBox3.Text & ", " & Me.TextBox4.Text & ", " & Me.TextBox5.Text & ")" (syntaxe fausse)
& Me.TextBox1.Text & ", ' " & Me.TextBox2.Text & " ', ' " & Me.TextBox3.Text & " ', ' " & Me.TextBox4.Text & " ', ' " & Me.TextBox5.Text & " ' ) ", con) (syntaxe correct)
il fallait mettre les simples cotes pour les valeur varchar
c evident n'est ce pas :s mais on a pas fait attention
Bonjour,
Vérifie que les champs de ta table soient du même type de données que tu as dans tes textBox ...
Ca doit venir de là ...
;o)
Polux
Vérifie que les champs de ta table soient du même type de données que tu as dans tes textBox ...
Ca doit venir de là ...
;o)
Polux
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
(**) Dim cmd As New SqlCommand("insert client values ( " & Me.TextBox1.Text & ", " & Me.TextBox2.Text & ", " & Me.TextBox3.Text & ", " & Me.TextBox4.Text & ", " & Me.TextBox5.Text & ")", con)
voilà la bonne syntaxe
pour être plus lisible, il est préférable de créer une variable string pour la requete :
Dim requete As String
requete = "insert client values ( " & Me.TextBox1.Text & ", " & Me.TextBox2.Text & ", " & Me.TextBox3.Text & ", " & Me.TextBox4.Text & ", " & Me.TextBox5.Text & ")"
Dim cmd As New SqlCommand(requete,con)
voilà la bonne syntaxe
pour être plus lisible, il est préférable de créer une variable string pour la requete :
Dim requete As String
requete = "insert client values ( " & Me.TextBox1.Text & ", " & Me.TextBox2.Text & ", " & Me.TextBox3.Text & ", " & Me.TextBox4.Text & ", " & Me.TextBox5.Text & ")"
Dim cmd As New SqlCommand(requete,con)
c bon j'ai corrigé mais :s:s
il est passé a la ligne suivante (une autre exception)
( Dim affectedrows As Integer = cmd.ExecuteNonQuery() )
et le msg est
(Le nom 'rdf' n'est pas autorisé dans ce contexte. Seules sont autorisées ici des constantes, des expressions ou des variables. Les noms de colonnes ne sont pas autorisés.)
il est passé a la ligne suivante (une autre exception)
( Dim affectedrows As Integer = cmd.ExecuteNonQuery() )
et le msg est
(Le nom 'rdf' n'est pas autorisé dans ce contexte. Seules sont autorisées ici des constantes, des expressions ou des variables. Les noms de colonnes ne sont pas autorisés.)
je ne connais pas vb.net ... mais ne devrais-tu pas faire :
Dim cmd As SqlCommand = new SqlCommand(requete,con) ??? et idem pour la connexion ?
affectedrows retourne le nombre de lignes affectées ?
Dim cmd As SqlCommand = new SqlCommand(requete,con) ??? et idem pour la connexion ?
affectedrows retourne le nombre de lignes affectées ?
Dim cmd As SqlCommand = new SqlCommand(requete,con)
ou
Dim cmd As new SqlCommand(requete,con)
c'est le meme resultat
pour affectedrows (c correcte ce que ta dit)mais c juste le nom ke jai donnée a la variable,dailleur je n'ai laisser que
cmd.ExecuteNonQuery()
mais tjr le meme problem :s :s
ou
Dim cmd As new SqlCommand(requete,con)
c'est le meme resultat
pour affectedrows (c correcte ce que ta dit)mais c juste le nom ke jai donnée a la variable,dailleur je n'ai laisser que
cmd.ExecuteNonQuery()
mais tjr le meme problem :s :s
Quel est le type de ta clé primaire ?
Tu devrais peut-être récupérer les textBox dans des variables que tu convertis en type selon tes champs de ta base.
Par exemple, si txtBox1 contient la clé primaire et que celle-ci est de type intéger, fait :
Dim sBox1 As Integer = Cint(Me.TextBox1.text)
etc ... ensuite tu passes les variables dans ta requete.
Tu devrais peut-être récupérer les textBox dans des variables que tu convertis en type selon tes champs de ta base.
Par exemple, si txtBox1 contient la clé primaire et que celle-ci est de type intéger, fait :
Dim sBox1 As Integer = Cint(Me.TextBox1.text)
etc ... ensuite tu passes les variables dans ta requete.
j'ai fait ce que tu ma dit
mais ya rien de new :s
je dois me deconnecté pour l'instant
je te remercie bcp bcp bcp pour ton aide polux
je vais te tenir au courant de mon application si tu veux ,surtout de cette erreur là ,si je trouve ou ca cloche..
merci encore
a+
mais ya rien de new :s
je dois me deconnecté pour l'instant
je te remercie bcp bcp bcp pour ton aide polux
je vais te tenir au courant de mon application si tu veux ,surtout de cette erreur là ,si je trouve ou ca cloche..
merci encore
a+
ok, merci ... je veux bien connaitre la suite ... je ne t'ai pas beaucoup aider sur ce coup ... je vais me mettre au vb.net pour y voir plus clair.
Bonne nuit @++
;o)
Polux
Bonne nuit @++
;o)
Polux
Salut,
Oui faute d'inattention mais malheureusement courante ... l'erreur vient aussi de moi, je n'ai pas pu tester :os dans un environnement comme SQL Designer, l'erreur aurait été détectée ...
Merci de m'avoir tenu informé ...
Bon courage pour la suite ...
;o)
Polux
Oui faute d'inattention mais malheureusement courante ... l'erreur vient aussi de moi, je n'ai pas pu tester :os dans un environnement comme SQL Designer, l'erreur aurait été détectée ...
Merci de m'avoir tenu informé ...
Bon courage pour la suite ...
;o)
Polux
Bonjour POLUX31, c'est nagnag
L'idée est bonne, je peux utiliser :
i = R
Do While i < s
While Not Qr.EOF
If i <> Qr.Fields(0) Then
lstaud.AddItem i
Qr.MovePrevious
End If
Qr.MoveNext
i = i + 1
Wend
Loop
ca marche chez moi mais, je sais pas pour toi, est ce qu'il y a des problèmes à ton avis ?
L'idée est bonne, je peux utiliser :
i = R
Do While i < s
While Not Qr.EOF
If i <> Qr.Fields(0) Then
lstaud.AddItem i
Qr.MovePrevious
End If
Qr.MoveNext
i = i + 1
Wend
Loop
ca marche chez moi mais, je sais pas pour toi, est ce qu'il y a des problèmes à ton avis ?
Salut nagnag,
Tu déclares i = R mais que vaut R ? idem pour s ?
Pourquoi ne pas faire qu'une boucle ? tu n'as pas besoin de faire do while .... loop
Ensuite dans ton if il y a toujours le Qr.MovePrevious ...
Je suppose que i = 1 pour lire la première occurence du recordset. Si la première occurence est 2, tu ajoutes bien i à l'objet Istaud, mais MovePrevious va générer un message d'erreur, puisque tu es sur la première occurence, tu ne peux pas faire "précédente occurence".
C'est donc un cas particulier qu'il faut traiter de façon indépendante. Même si tu sais que ce n'est pas le cas dans ta table, mais il faut anticiper les éventuels changement pouvant intervenir dans la table (Update, Delete...) qui peuvent changer les données.
Voilà mes remarques ... mais l'idée est excellente.
Bravo et bon courage
;o)
Polux
PS: Merci de me tenir au courant de l'avancement de ton travail ...
Tu déclares i = R mais que vaut R ? idem pour s ?
Pourquoi ne pas faire qu'une boucle ? tu n'as pas besoin de faire do while .... loop
Ensuite dans ton if il y a toujours le Qr.MovePrevious ...
Je suppose que i = 1 pour lire la première occurence du recordset. Si la première occurence est 2, tu ajoutes bien i à l'objet Istaud, mais MovePrevious va générer un message d'erreur, puisque tu es sur la première occurence, tu ne peux pas faire "précédente occurence".
C'est donc un cas particulier qu'il faut traiter de façon indépendante. Même si tu sais que ce n'est pas le cas dans ta table, mais il faut anticiper les éventuels changement pouvant intervenir dans la table (Update, Delete...) qui peuvent changer les données.
Voilà mes remarques ... mais l'idée est excellente.
Bravo et bon courage
;o)
Polux
PS: Merci de me tenir au courant de l'avancement de ton travail ...