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

Signaler
Messages postés
46
Date d'inscription
samedi 21 avril 2007
Statut
Membre
Dernière intervention
18 février 2008
-
Messages postés
46
Date d'inscription
samedi 21 avril 2007
Statut
Membre
Dernière intervention
18 février 2008
-
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

22 réponses

Messages postés
46
Date d'inscription
samedi 21 avril 2007
Statut
Membre
Dernière intervention
18 février 2008
62
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 60511 internautes nous ont dit merci ce mois-ci

Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 136
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
Messages postés
46
Date d'inscription
samedi 21 avril 2007
Statut
Membre
Dernière intervention
18 février 2008
62
wi wi c'est ce que j'ai fait mais sans resultats :s
il ya tjr la meme erreur
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 136
enlève la première double cote entre values et (
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 136
(**) 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)
Messages postés
46
Date d'inscription
samedi 21 avril 2007
Statut
Membre
Dernière intervention
18 février 2008
62
ca marche tjrs pas :s :s
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 136
et maintenant ça coince toujours ???
Messages postés
46
Date d'inscription
samedi 21 avril 2007
Statut
Membre
Dernière intervention
18 février 2008
62
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.)
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 136
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 ?
Messages postés
46
Date d'inscription
samedi 21 avril 2007
Statut
Membre
Dernière intervention
18 février 2008
62
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
Messages postés
46
Date d'inscription
samedi 21 avril 2007
Statut
Membre
Dernière intervention
18 février 2008
62
j'ai 5 champs dans ma table client compris la clé primaire , et qui n'est pas auto-incrémenté
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 136
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.
Messages postés
46
Date d'inscription
samedi 21 avril 2007
Statut
Membre
Dernière intervention
18 février 2008
62
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+
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 136
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
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 136
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
Messages postés
46
Date d'inscription
samedi 21 avril 2007
Statut
Membre
Dernière intervention
18 février 2008
62
:) merci a toi aussi

a+
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 136
Bonjour,

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

@++

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 ?
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 136
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 ...
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 136
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é ?