problème access - VB/VBA/VBS - Programmation
Marsh Posté le 09-05-2004 à 23:05:19
Essaye de doubler l'apostrophe: remplace ' par '' (deux apostrophes, pas des guillemets)
Marsh Posté le 09-05-2004 à 23:20:20
voilà j'ai une textbox
l'utilisateur va saisir le nom du film dans cette textbox
le contenu de cette text box je vais l'envoyer dans ma base
access
si le contenu de la textbox comporte des cotes '
alors on me signale un message d'erreur
je crois plutot que sa vient d'access
Merci tout de même
Marsh Posté le 09-05-2004 à 23:44:07
Romano17 a écrit : voilà j'ai une textbox |
Essaie ça:
Public Function setStringToSQL(inString) As String
i = 1
borneMax = Len(inString)
Do While i <= borneMax
lettre = Mid(inString, i, 1)
If lettre = "'" Then
avant = Mid(inString, 1, i - 1)
apres = Mid(inString, i)
inString = avant & "'" & apres
borneMax = Len(inString)
i = i + 1
End If
i = i + 1
Loop
setStringToSQL = inString
End Function
C'est la fonction que j'utilise, et mes interfaces avec access passent sans problème
Marsh Posté le 10-05-2004 à 00:04:26
c'est cool de ta part c'est une autre façon de résoudre le problème merci beaucoup je vais essayer çà toute de suite
Marsh Posté le 10-05-2004 à 00:12:48
a je suis débutant en vb je ne sais pas ce que fais instring à quoi sert-il merci
Marsh Posté le 10-05-2004 à 00:56:51
inString c'est une variable. C'est la valeur de ta text box
Marsh Posté le 10-05-2004 à 10:43:25
La fonction te sert à doubler toutes les apostrophes: tu mets outString = setStringToSQL(myTextBox.Text) où myTextBox est le nom de ta textbox. Tu récupères le résultat dans outString, et c'est ce que tu envoies à Access
Marsh Posté le 10-05-2004 à 12:34:22
Oui Romano17, daviso a raison c'est un pb de quote. En fait la quote qui est dans ton texte et que tu insère, SQL va l'interpréter comme la quote de fin de texte donc tout ce qui se trouve après cette quote va être mal interprétée.
Sincèrement daviso, tu te prends la tete pour rien avec ta fonction, utilise ce qui existe déja :
Public Function DoubleQuote(sValue As String) As String
DoubleQuote = Replace(sValue, "'", "''" )
End Function
Moi j'utilise cette fonction quand je dois écrire dans une BD externe à Access, comme avec SQL Server
Si dans le futur tu a encore des pb de requetes SQL ce que tu peux faire pour savoir si cela vient de ta requete et avoir plus de détail (peut-être) sur ton erreur c'est d'initialiser une variable avec la chaine de la requete SQL et ensuite du fais:
debug.print mavarSQL
Ouvre la fenetre de debuggage et ensuite tu verra ta requete affiché littéralement. Ensuite copie-là crée une nouvelle requete en mode création/SQL, copie le texte, et execute-là. Ainsi tu verra mieux tes pb.
Bonne chance
Marsh Posté le 10-05-2004 à 14:41:19
le problème avec tout ça, c'est qu'apres tes titres de film ne sont plus tout à fait les mêmes sans les apostrophes...
si tu faisais quelque chose de plus simple : est-tu vraiment obligé de faire une requête en vba ?
dans la procédure sur click d'un bouton de validation, tu pourais executer tout simplement une requête ajout (créée avec l'assistant, ayant dans le champs TitreFilm :[Formulaires]![NomFormulaire]![NomTextBox]
Comme ça ton ajout fonctionne et ton titre reste cohérent.
Marsh Posté le 10-05-2004 à 15:09:33
Citation : le problème avec tout ça, c'est qu'apres tes titres de film ne sont plus tout à fait les mêmes sans les apostrophes... |
Non ne t'inquiètes pas cela ne modifie rien. Le fait de doubler les apostrophes indique au système que c'est le caractère " ' " et non le caractère de délimitation de chaine.
Sinon la solution Access proposée par Pumpkin m'a l'air tout aussi bonne ...
Marsh Posté le 11-05-2004 à 09:26:47
alterisanz a écrit : : |
Oui, je connais la fonction. Mais il me semble qu'elle n'est disponible que dans la version entreprise et pas dans la version de base. C'est pour ça que j'ai préféré faire une petite procédure.
Marsh Posté le 09-05-2004 à 17:50:45
alors voilà
access.Execute "INSERT INTO film(c) VALUES ('" & fiche.commentaire & "')"
quand le contenu de fiche.commentaire = ' alors vb m' envoie ce message
-2147217900(80040e14)
erreur de syntaxe(opérateur absent) dans l'expression "'',"
je ne comprend pas je peux ajouter tout les caractères possibles
mais quand je met ce caractère ' bé alors ca bug