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

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

Votre réponse

2 réponses

Messages postés
14322
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
14 décembre 2018
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
Messages postés
14322
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
14 décembre 2018
-
Regardes du coté des requêtes paramétrées, sinon, double les ' pour les échapper (par un remplacement dans le code String.Replace).
strafor
Messages postés
35
Date d'inscription
dimanche 3 novembre 2013
Dernière intervention
27 mai 2014
-
Salut NHenry. Merci pour ton aide

j'ai essayé à nouveau en doublant les '. mais le problème demeure toujours.
strafor
Messages postés
35
Date d'inscription
dimanche 3 novembre 2013
Dernière intervention
27 mai 2014
-
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
Messages postés
35
Date d'inscription
dimanche 3 novembre 2013
Dernière intervention
27 mai 2014
-
Problème résolu!
Merci infiniment
Commenter la réponse de NHenry
Messages postés
3244
Date d'inscription
jeudi 26 novembre 2009
Dernière intervention
13 décembre 2018
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
Messages postés
35
Date d'inscription
dimanche 3 novembre 2013
Dernière intervention
27 mai 2014
-
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
Messages postés
35
Date d'inscription
dimanche 3 novembre 2013
Dernière intervention
27 mai 2014
-
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
Messages postés
35
Date d'inscription
dimanche 3 novembre 2013
Dernière intervention
27 mai 2014
-
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.