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

Signaler
Messages postés
35
Date d'inscription
dimanche 3 novembre 2013
Statut
Membre
Dernière intervention
27 mai 2014
-
Messages postés
35
Date d'inscription
dimanche 3 novembre 2013
Statut
Membre
Dernière intervention
27 mai 2014
-
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

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

Problème résolu!
Merci infiniment
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
50
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
Messages postés
35
Date d'inscription
dimanche 3 novembre 2013
Statut
Membre
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?
Messages postés
35
Date d'inscription
dimanche 3 novembre 2013
Statut
Membre
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.
Messages postés
35
Date d'inscription
dimanche 3 novembre 2013
Statut
Membre
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.