Bijna goed, al vermoed ik dat je een typefout hebt gemaakt uit enthousiasme:
Code:
[COLOR=#333333]sFilter = "Locatie = """ & sLocatie [B]&[/B] """"[/COLOR]
En dan nog een stukje uitleg, zodat je het
nooit meer vergeet:
Code:
[COLOR=#333333]sFilter = "Locatie = " & sLocatie [/COLOR]
Als sLocatie een
getal is, dan kun je dat gelijk in het filter zetten, zoals hierboven. Is sLocatie echter
tekst, dan moet die tekst tussen
Aanhalingstekens staan. Daarvoor mag je enkele gebruiken (') of dubbele ("). Beide varianten hebben voor- en nadelen. De énkele quoot heeft als grote nadeel dat je daarmee de fout in gaat als er in je variabele óók een enkel aanhalingsteken zit, zoals in plaatsnamen als
s' Hertogenbosch.
Code:
[COLOR=#333333]sFilter = "Locatie = '" & sLocatie & "'"[/COLOR]
In de bovenste variant is je filterstring dan letterlijk:
Code:
[COLOR=#333333]sFilter = "Locatie = 's'[/COLOR]Hertogenbosch[COLOR=#333333]"[/COLOR]
Dat levert een foutmelding op, want alleen de 's' zit in het filter, en daarna volgt een voor Access onbegrijpelijke code. Beter is dus om de dubbele quoot te gebruiken. Maar die heeft als nadeel dat de dubbele quoot een beschermd teken is, dat wordt gebruikt om strings te definiëren. Kijk maar in het andere voorbeeld, waarin je de stringelementen tussen dubbele quoots hebt gezet. Daarom moet je iets extra's doen in je filter: je moet Access duidelijk maken dat de dubbele quoot een
filterteken is, en geenbegin/
einde string. En dat doe je door het teken te
herhalen. Dus daarom typ je het teken twee keer, de eerste keer is de aankondiging dat het
volgende teken letterlijk gebruikt moet worden.
Code:
[COLOR=#333333]sFilter = "Locatie = "[/COLOR][COLOR=#ff0000][B]"[/B][/COLOR][COLOR=#333333]" & sLocatie & ""[/COLOR][COLOR=#ff0000][B]"[/B][/COLOR][COLOR=#333333]"[/COLOR]
Hier (
"Locatie = """) begin je met een dubbele quoot, omdat je een stringvariabele begint, en eindig je met drie dubbele quoots. De eerste is de aankondiging van de tweede, en de derde sluit de string op de normale manier af. Omdat een tekstfilter moet eindigen met een dubbele quoot, moet je het proces daar herhalen. Nu dus door vier dubbele quoots te typen. De eerste opent de string, de tweede is de aankondiging, de derde is het feitelijke teken, en de vierde sluit de string af. In vergelijking met de eerste helft dus eigenlijk hetzelfde, want ook dáár zie je in totaal vier dubbele quoots staan. Alleen staat daar not tekst tussen de eerste en de tweede quoot.
Hoop dat het zo duidelijker is
. Veel mensen gebruiken overigens steevast de enkele quoots omdat die makkelijker zijn. Ik heb mezelf aangeleerd om altijd de dubbele te gebruiken, omdat die nooit fout gaan, en de enkele dus in sommige gevallen wel. En waarom zou je dat risico nemen? Het is snel gewend (vind ik).