Problème d'insert avec acess

Résolu
Signaler
Messages postés
204
Date d'inscription
dimanche 13 décembre 2009
Statut
Membre
Dernière intervention
1 avril 2012
-
Messages postés
204
Date d'inscription
dimanche 13 décembre 2009
Statut
Membre
Dernière intervention
1 avril 2012
-
Bonjour tout le monde,

J'essaye tant bien que mal d'insérer un texte dans une base de données Access.
Le problème c'est que mon champ texte contient souvent des virgules ce qui occasionne un bug lors de l'executescalar. En outre voilà :
 strSql = "insert into courrier (objet_c, dte_envoi_c, txt_c, num_clt) values('" & obj.Text & "',#" & dtenvoi.Value & "#,'" & txt.Text & "'," & nmclt.Text & ")"[....] ObjetCommand.ExecuteScalar()
l'obj.text peut conetnir du texte du type : "bonjour, au revoir" Et cette cette virgule qui entraine une confusion dans la requête. Quelqu'un peut il m'aider ?
Merci.

6 réponses

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
81
Salut
Non, pas la virgule mais une éventuelle apostrophe '
Que donne ta requète avant exécution ? un exemple serait le bienvenu pour trouver le problème.

Les délimiteurs de texte, en SQL, sont les '
Si ton texte comporte des ', ça rend la requète bancale.
Il faut doubler les '
Donc, comme tu le verras dans n'importe quelle source liée aux base de données, on n'utilise jamais une TextBox directement : On stocke le contenu de la TextBox dans une variable, puis on s'occupe des caractères spéciaux comme les ' et alors on peut s'en servir dans la requète.
Exemple :
Dim sTexte As String = obj.Text.Replace("'", "''")

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
204
Date d'inscription
dimanche 13 décembre 2009
Statut
Membre
Dernière intervention
1 avril 2012
5
En pratique, voici le contexte:
J'ai un form avec différent champ à la fin du form j'enregistre tout les contenus des champs pour les envoyer dans Access. Plus loin dans mon code je fais appel à un CrystalReport qui récupère ces données.
Ainsi, dans mon obj.text et txt.text, il peut y avoir "bonjour, au revoir". La "," a doit donc apparaître pour afficher dans mon Crystal le même texte auparavant saisi. (Sous PHP, MySql la même requête fonctionne très bien). Du coup, lors de l'exécution on aurait :
strSql = "insert into courrier (objet_c, dte_envoi_c, txt_c, num_clt) values('bonjour, au revoir',#2010-02-02#,'bonjour, au revoir',20)"[....] ObjetCommand.ExecuteScalar()

J'espère avoir été plus clair..
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
81
Je n'ai absolument rien pigé
Ta question concerne l'insertion des données et tu nous montres une requète qui n'a aucun problème de syntaxe.
As-tu vérifier si les données insérées sont conformes ?
Oui : Donc, pas de problème
Non : Je ne comprends pas où est ton problème.

Pourquoi la virgule te tracasse t-elle autant ?
"La "," a doit donc apparaître pour afficher dans mon Crystal le même texte auparavant saisi"
Tu insères un texte avec une virgule : Normal donc que cette virgule réapparaisse.
Elle apparait ? Que vois-tu après traitement par Crystal ?
Est-ce toi qui fait la lecture des données pour les fournir à Crystal ?
Si oui, vérifie ton traitement
Si non, je ne vois pas pourquoi Crystal se mettrait à interpréter les virgules comme séparateur qui découperait ton texte ... mystère

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
204
Date d'inscription
dimanche 13 décembre 2009
Statut
Membre
Dernière intervention
1 avril 2012
5
Alors, aprés vérification, effectivement ce n'est pas la virgule mais le " ' " qui prose problème... (autant pour moi)
Donc dès lors que mes champs contiennent "bonjour aujourd'hui" ça bug..
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
81
et ... je t'ai donné la solution dans ta première réponse.

Vala
Jack,
Champion du monde 2005 et 2006 de boule de cristal, division Dev
Messages postés
204
Date d'inscription
dimanche 13 décembre 2009
Statut
Membre
Dernière intervention
1 avril 2012
5
Merci beaucoup jack !