Problème d'insert avec acess

Résolu
cs_lilj Messages postés 204 Date d'inscription dimanche 13 décembre 2009 Statut Membre Dernière intervention 1 avril 2012 - 23 mars 2010 à 10:29
cs_lilj Messages postés 204 Date d'inscription dimanche 13 décembre 2009 Statut Membre Dernière intervention 1 avril 2012 - 23 mars 2010 à 17:04
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

cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 78
23 mars 2010 à 11:44
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)
3
cs_lilj Messages postés 204 Date d'inscription dimanche 13 décembre 2009 Statut Membre Dernière intervention 1 avril 2012 5
23 mars 2010 à 12:28
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..
0
cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 78
23 mars 2010 à 13:51
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)
0
cs_lilj Messages postés 204 Date d'inscription dimanche 13 décembre 2009 Statut Membre Dernière intervention 1 avril 2012 5
23 mars 2010 à 14:00
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..
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 78
23 mars 2010 à 14:56
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
0
cs_lilj Messages postés 204 Date d'inscription dimanche 13 décembre 2009 Statut Membre Dernière intervention 1 avril 2012 5
23 mars 2010 à 17:04
Merci beaucoup jack !
0