Remplir une base de données ACCESS à partir des textBox

Résolu
strafor Messages postés 35 Date d'inscription dimanche 3 novembre 2013 Statut Membre Dernière intervention 27 mai 2014 - 15 nov. 2013 à 17:20
strafor Messages postés 35 Date d'inscription dimanche 3 novembre 2013 Statut Membre Dernière intervention 27 mai 2014 - 20 nov. 2013 à 11:04
Bonjour,

J'utilise Visual Studio 2010 (VB.Net) et une base ACCESS .
J'ai essayé pas mal de fois d'insérer des données à partir des champs textBox et le problème revient à comment se reférer aux valeurs textuelles qui existent dans les textBox.
J'ai utilisé le code suivant:

Dim cmd As OleDb.OleDbCommand
Dim chaine As String
Dim conection As New OleDb.OleDbConnection

conection.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=C:\Users\ROLAND KOFFI\Documents\Visual Studio 2010\Projects\WindowsApplication3_LOYERS\WindowsApplication3_LOYERS\GestionLoyers1.accdb"

conection.Open()

chaine = "INSERT INTO LOCATAIRES(Nom, Adresse,Ville,Pays) VALUES(' " & TextBox1.Text & " ',' " & TextBox2.Text & " ', ' " & TextBox3.Text & " ', ' " & TextBox4.Text & " ')"

cmd = New OleDb.OleDbCommand(chaine, conection)
cmd.ExecuteNonQuery()

conection.Close()

Je reçois le message d'érreur suivant lorsque j'exécute les procédures:
Eerreur de syntaxe( opérateurs absents) dans l'expression.

Si quelqu'un peut m'aider ça m'aiderait à avancer.
Merci d'avance à vous!

2 réponses

NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
17 nov. 2013 à 15:05
Bonjour,

As-tu affiché la requête SQL exécutée pour essayer de comprendre d'où vient le problème ?
As-tu essayer d'exécuter la requête générée directement dans Access ?

Attention aux injections SQL, car si un des TextBox contient un apostrophe, ta requête sera incorrecte.
0
Bonsoir NHenry,
Je vous remercie de votre précieux temps que vous m'accordiez pour m'aider résoudre le problème auquel je suis confronté

Effectivement je me suis rendu compte que lorsque mes textbox contiennent un apostrophe ma requête deveint incorrecte et le message d'érreur s'affiche.
Sans les apostrophes la requête marche parfaitement.

Pourtant je souhaite utiliser des apostrophes puisque certains des noms comportent des apostrophes dans leur écriture.

Est - il possible d'utiliser des textbox avec des apostrophes?
Si oui, comment y procéder?
Merci d'avance de votre aide.
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
18 nov. 2013 à 22:09
Regardes du coté des requêtes paramétrées, sinon, double les ' pour les échapper (par un remplacement dans le code String.Replace).
0
strafor Messages postés 35 Date d'inscription dimanche 3 novembre 2013 Statut Membre Dernière intervention 27 mai 2014
18 nov. 2013 à 23:36
Salut NHenry. Merci pour ton aide

j'ai essayé à nouveau en doublant les '. mais le problème demeure toujours.
0
strafor Messages postés 35 Date d'inscription dimanche 3 novembre 2013 Statut Membre Dernière intervention 27 mai 2014
18 nov. 2013 à 23:50
Vous m'avez conseillé les requêtes parametrées. Mias je ne n'ai pas une grande notion de ces types de requêtes.

Une aide de plus dans ce sens me permettrait de franchir une grande étape de mon travail.

Merci beaucoup pour votre aide.
0
strafor Messages postés 35 Date d'inscription dimanche 3 novembre 2013 Statut Membre Dernière intervention 27 mai 2014
20 nov. 2013 à 11:04
Problème résolu!
Merci infiniment
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
18 nov. 2013 à 22:29
Salut

Private Function InsertLocataire() As Boolean

Dim conection As New OleDb.OleDbConnection
Dim command As OleDbCommand
Try
conection.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=C:\Users\ROLAND KOFFI\Documents\Visual Studio 2010\Projects\WindowsApplication3_LOYERS\WindowsApplication3_LOYERS\GestionLoyers1.accdb"
command.Connection = conection
command = New OleDbCommand()
command.CommandText = "INSERT INTO LOCATAIRES (Nom, Adresse,Ville,Pays) VALUES (?,?,?,?);"
command.Parameters.Add("?", OleDbType.BSTR).Value = textbox1.text
command.Parameters.Add("?", OleDbType.BSTR).Value = TextBox2.Text
command.Parameters.Add("?", OleDbType.BSTR).Value = TextBox3.Text
command.Parameters.Add("?", OleDbType.BSTR).Value = TextBox4.Text
command.ExecuteNonQuery()
conection.Close()
Return True
Catch ex As Exception
Return False
End Try

End Function
0
strafor Messages postés 35 Date d'inscription dimanche 3 novembre 2013 Statut Membre Dernière intervention 27 mai 2014
18 nov. 2013 à 23:43
Bonsoir cs_ShayW

vous avez déclaré une fonction. Comment faire pour l'appeler et l'associer à mon boutton qui sert à remplir ma table LOCATAIRES?
merci d'avance pour ton aide?
0
strafor Messages postés 35 Date d'inscription dimanche 3 novembre 2013 Statut Membre Dernière intervention 27 mai 2014
19 nov. 2013 à 00:25
Merci beaucoup Bonsoir cs_ShayW

ton code sur les requêtes parametrées m'a permis résoudre le problème. le code marche parfaitement.

Merci à vous tous qui m'avez aider à résoudre. Vous m'avez permis de découvrir et d'apprendre à nouveau.
0
strafor Messages postés 35 Date d'inscription dimanche 3 novembre 2013 Statut Membre Dernière intervention 27 mai 2014
19 nov. 2013 à 00:46
Pour tous ceux qui voudraient le code le voici :

Dim cmd As OleDb.OleDbCommand
Dim chaine As String
Dim conection As New OleDb.OleDbConnection
conection.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=C:\Users\ROLAND KOFFI\Documents\Visual Studio 2010\Projects\WindowsApplication3_LOYERS\WindowsApplication3_LOYERS\GestionLoyers1.accdb"
conection.Open()

chaine = "INSERT INTO LOCATAIRES(Nom, Adresse, Ville, Pays, Portable1, Portable2, Email, Commentaire) VALUES (?,?,?,?)"
cmd = New OleDb.OleDbCommand(chaine, conection)
With cmd.Parameters
.Add("?", OleDb.OleDbType.BSTR).Value = TextBox1.Text
.Add("?", OleDb.OleDbType.BSTR).Value = TextBox2.Text
.Add("?", OleDb.OleDbType.BSTR).Value = TextBox3.Text
.Add("?", OleDb.OleDbType.BSTR).Value = TextBox4.Text
End With
cmd.ExecuteNonQuery()
conection.Close()

Je remercie tous les membres du forum pour leur aide qui m'a permis de résoudre mon problème.
0
Rejoignez-nous