[vb.net/sql] insertion de donnée

Résolu/Fermé
Doom_aok Messages postés 46 Date d'inscription samedi 21 avril 2007 Statut Membre Dernière intervention 18 février 2008 - 25 oct. 2007 à 00:26
Doom_aok Messages postés 46 Date d'inscription samedi 21 avril 2007 Statut Membre Dernière intervention 18 février 2008 - 29 oct. 2007 à 22:46
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
A voir également:

22 réponses

Doom_aok Messages postés 46 Date d'inscription samedi 21 avril 2007 Statut Membre Dernière intervention 18 février 2008 67
28 oct. 2007 à 22:51
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
2
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
25 oct. 2007 à 00:30
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
1
Doom_aok Messages postés 46 Date d'inscription samedi 21 avril 2007 Statut Membre Dernière intervention 18 février 2008 67
25 oct. 2007 à 00:35
wi wi c'est ce que j'ai fait mais sans resultats :s
il ya tjr la meme erreur
1
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
25 oct. 2007 à 00:41
enlève la première double cote entre values et (
1

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

Posez votre question
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
25 oct. 2007 à 00:43
(**) 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)
1
Doom_aok Messages postés 46 Date d'inscription samedi 21 avril 2007 Statut Membre Dernière intervention 18 février 2008 67
25 oct. 2007 à 00:47
ca marche tjrs pas :s :s
1
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
25 oct. 2007 à 00:50
et maintenant ça coince toujours ???
1
Doom_aok Messages postés 46 Date d'inscription samedi 21 avril 2007 Statut Membre Dernière intervention 18 février 2008 67
25 oct. 2007 à 00:52
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.)
1
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
25 oct. 2007 à 01:06
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 ?
1
Doom_aok Messages postés 46 Date d'inscription samedi 21 avril 2007 Statut Membre Dernière intervention 18 février 2008 67
25 oct. 2007 à 01:12
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
1
Doom_aok Messages postés 46 Date d'inscription samedi 21 avril 2007 Statut Membre Dernière intervention 18 février 2008 67
25 oct. 2007 à 01:25
j'ai 5 champs dans ma table client compris la clé primaire , et qui n'est pas auto-incrémenté
1
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
25 oct. 2007 à 01:31
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.
1
Doom_aok Messages postés 46 Date d'inscription samedi 21 avril 2007 Statut Membre Dernière intervention 18 février 2008 67
25 oct. 2007 à 01:43
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+
1
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
25 oct. 2007 à 01:45
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
1
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
29 oct. 2007 à 00:05
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
1
Doom_aok Messages postés 46 Date d'inscription samedi 21 avril 2007 Statut Membre Dernière intervention 18 février 2008 67
29 oct. 2007 à 00:11
:) merci a toi aussi

a+
1
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
29 oct. 2007 à 08:10
Bonjour,

N'oublie pas de mettre résolu sur ton post ...

@++

Polux
1
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 ?
1
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
29 oct. 2007 à 10:02
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 ...
1
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
25 oct. 2007 à 01:20
je ne peux pas t'aider sur la syntaxe vb.net. Je peux peut-être t'aider en SQL seulement.

As-tu bien 5 champs dans ta table client hors le champ de la clé primaire ? Si oui, la table client a-t-elle une clé primaire auto-incrémenté ?
0