2010-07-13 15 views
1

J'écris une requête qui doit compter le nombre d'étudiants inscrits à un cours, et la façon dont je le fais est comme ceci:assainissant une chaîne dans Access 2003 SQL: Problème avec '

DCount("[student/course table].[Student ID]","[student/course table]","[StartDate] = #" & [Course Start Date] & "# AND Location = '" & tblCourseDetails.Location & "' AND [Course Number] = '" & [Course Number] & "'") 

Le problème est que Location peut contenir des apostrophes, ce qui provoque des erreurs dans mes résultats. Cela semble bousiller beaucoup de choses (comme il me demande d'entrer un paramètre deux fois). Y a-t-il un moyen simple de contourner les apostrophes? Je pensais peut-être utiliser Replace() = Replace() ce qui serait une solution assez simple, mais s'il y a d'autres façons de contourner cela, j'aimerais savoir. Je ne m'inquiète pas trop de l'injection SQL. Pour utiliser cette requête, vous auriez à peu près accès à la base de données de toute façon.

Ce n'est pas toute ma requête, si vous pensez que je devrais le signaler, dites-le moi.

Répondre

3

Vous devez ajouter un caractère d'échappement. Pour l'accès, je crois que c'est "pour".

Alors trouvez et remplacez 'avec' et vous devriez être prêt à partir.

Modifier: Ceci est une apostrophe supplémentaire, pas un double guillemet.

Replace(tblCourseDetails.Location, "'", "''") 
+0

Quel serait le code exact pour cela? Quand j'essaie et remplace ([Location], "'", "' '") LIKE Replace ([tblCourseDetails]. [Lieu], "'", "''") & ou & Replace ([Location], "' "," '' ") = Remplacer ([tblCourseDetails]. [Location]," '","' '") & ma requête ne fonctionne pas correctement (cela donnera 0 pour le compte). – Jeff

+1

Remplacez simplement: 'Location = '" & Replace (tblCourseDetails.Location, "'", "''") & "'AND' – Fionnuala

+0

Parfait, ça marche maintenant. J'ai réalisé juste après avoir posté mon dernier commentaire que le premier ne devrait pas être en dehors de la chaîne. Ensuite, je suis allé sur une chasse d'oie sauvage en essayant de convertir Location = '"& Replace (Location ...) à Replace (Location,"' "," '' ") = '" & Replace (Lieu ...) mais je voyez pourquoi ce n'est pas nécessaire maintenant. Pour référence future, est-il possible d'obtenir Replace (Location, "'", "' '") =' "& Replace (Emplacement," '","' '"& ... pour fonctionner? Remplacer dans la chaîne de critères DCount – Jeff