problème access

problème access - VB/VBA/VBS - Programmation

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

Reply

Marsh Posté le 09-05-2004 à 17:50:45   

Reply

Marsh Posté le 09-05-2004 à 23:05:19    

Essaye de doubler l'apostrophe: remplace ' par '' (deux apostrophes, pas des guillemets)

Reply

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

Reply

Marsh Posté le 09-05-2004 à 23:44:07    

Romano17 a écrit :

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


 
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

Reply

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

Reply

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

Reply

Marsh Posté le 10-05-2004 à 00:56:51    

inString c'est une variable. C'est la valeur de ta text box

Reply

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

Reply

Marsh Posté le 10-05-2004 à 12:34:22    

:o 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 :sol:

Reply

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.

Reply

Marsh Posté le 10-05-2004 à 14:41:19   

Reply

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 ...

Reply

Marsh Posté le 11-05-2004 à 09:26:47    

alterisanz a écrit :

:
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


 
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.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed