Remplir une base de données ACCESS à partir des textBox [Résolu]

strafor 35 Messages postés dimanche 3 novembre 2013Date d'inscription 27 mai 2014 Dernière intervention - 15 nov. 2013 à 17:20 - Dernière réponse : strafor 35 Messages postés dimanche 3 novembre 2013Date d'inscription 27 mai 2014 Dernière intervention
- 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!
Afficher la suite 

Votre réponse

10 réponses

NHenry 14274 Messages postés vendredi 14 mars 2003Date d'inscriptionModérateurStatut 18 octobre 2018 Dernière intervention - 17 nov. 2013 à 15:05
0
Merci
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.
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.
NHenry 14274 Messages postés vendredi 14 mars 2003Date d'inscriptionModérateurStatut 18 octobre 2018 Dernière intervention - 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).
strafor 35 Messages postés dimanche 3 novembre 2013Date d'inscription 27 mai 2014 Dernière intervention - 18 nov. 2013 à 23:36
Salut NHenry. Merci pour ton aide

j'ai essayé à nouveau en doublant les '. mais le problème demeure toujours.
strafor 35 Messages postés dimanche 3 novembre 2013Date d'inscription 27 mai 2014 Dernière intervention - 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.
strafor 35 Messages postés dimanche 3 novembre 2013Date d'inscription 27 mai 2014 Dernière intervention - 20 nov. 2013 à 11:04
Problème résolu!
Merci infiniment
Commenter la réponse de NHenry
cs_ShayW 3238 Messages postés jeudi 26 novembre 2009Date d'inscription 14 mars 2018 Dernière intervention - 18 nov. 2013 à 22:29
0
Merci
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
strafor 35 Messages postés dimanche 3 novembre 2013Date d'inscription 27 mai 2014 Dernière intervention - 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?
strafor 35 Messages postés dimanche 3 novembre 2013Date d'inscription 27 mai 2014 Dernière intervention - 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.
strafor 35 Messages postés dimanche 3 novembre 2013Date d'inscription 27 mai 2014 Dernière intervention - 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.
Commenter la réponse de cs_ShayW

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.