Problème d'insert avec acess [Résolu]

cs_lilj 205 Messages postés dimanche 13 décembre 2009Date d'inscription 1 avril 2012 Dernière intervention - 23 mars 2010 à 10:29 - Dernière réponse : cs_lilj 205 Messages postés dimanche 13 décembre 2009Date d'inscription 1 avril 2012 Dernière intervention
- 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.
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscription 28 août 2015 Dernière intervention - 23 mars 2010 à 11:44
3
Merci
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)

Merci cs_Jack 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 97 internautes ce mois-ci

Commenter la réponse de cs_Jack
cs_lilj 205 Messages postés dimanche 13 décembre 2009Date d'inscription 1 avril 2012 Dernière intervention - 23 mars 2010 à 12:28
0
Merci
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..
Commenter la réponse de cs_lilj
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscription 28 août 2015 Dernière intervention - 23 mars 2010 à 13:51
0
Merci
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)
Commenter la réponse de cs_Jack
cs_lilj 205 Messages postés dimanche 13 décembre 2009Date d'inscription 1 avril 2012 Dernière intervention - 23 mars 2010 à 14:00
0
Merci
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..
Commenter la réponse de cs_lilj
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscription 28 août 2015 Dernière intervention - 23 mars 2010 à 14:56
0
Merci
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
Commenter la réponse de cs_Jack
cs_lilj 205 Messages postés dimanche 13 décembre 2009Date d'inscription 1 avril 2012 Dernière intervention - 23 mars 2010 à 17:04
0
Merci
Merci beaucoup jack !
Commenter la réponse de cs_lilj

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.