Parameters worden nooit automatisch in de Criteriaregels ingevuld, want dat zou ook helemaal niet kunnen. Parameters moet je zien als definities van gegevensvelden. Standaard is een parameter in een criterium (alles wat tussen rechte haken staat is dus een parameter) van het type Tekst. Je legt dus in het Parameters venster vast welk soort gegeven je wilt filteren in het criterium. De feitelijke filtervraag maak je daarna zelf. Parameters zijn ook niet verplicht om op deze manier vast te leggen, maar het biedt wel aanzienlijke voordelen.
Een filtering als Between [Startdatum] And [Einddatum] werkt ook zonder parameterdefinities, maar zonder die definities herkent Access de parameters niet als een datumveld. De filtering is dus gebaseerd op een Tekststring (of twee in het voorbeeld), en zoals je weet, kun je een datum niet met een tekststring filteren, je moet de datum opmaken als Datum. Daarom zet Access uit zichzelf de datum die je intypt al tussen ##. Typ je in een datumveld de tekst '5-1' (zonder quootjes natuurlijk) dan maakt Access er dit van: #5-1-2014#. De hekjes geven dus aan dat de tekst ertussen een datum is. Net zoals "" aangeeft dat de ingesloten tekst een tekstveld is.
Wat is dus het probleem van het criterium Between [Startdatum] And [Einddatum] zonder parameter definities? Als je de query zonder meer uitvoert, en bij Startdatum 5-1 invult, en bij Einddatum 12-1, dan is het resultaat leeg. De ingevoerde waarden zijn namelijk geen datum, maar tekst. Door de parameters vast te leggen zoals in het plaatje, zijn het wél datumvelden, en kun je de datums invullen als 5-1 en 12-1. Deze verkorte wijze zorgt er overigens wel voor dat Access het huidige jaartal gebruikt, dus als je vorige jaren wilt filteren, dan moet je de volledige datums invullen. Maar dan nog is het handig om de parameters goed vast te leggen.
Laatste aandachtspuntje: als je een criterium op pak 'm beet Plaatsnaam maakt, en dat ziet er zo uit: [Typ de plaatsnaam die je wilt filteren:], en je wilt een parameter vastleggen voor die vraag, dan moet die letterlijk worden overgenomen. Zou je de parameter vastleggen als: [Typ de plaatsnaam die je wilt filteren] dan werkt hij al niet meer, omdat de teksten verschillen. Feitelijk heb je dan twee verschillende parameters in gebruik. Zo'n datumfilter maak ik, om de vragen wat vriendelijker te houden, dus meestal zo:
Parameterdefinities:
[Typ de Startdatum:] - Datum/Tijd
[Typ de Einddatum:] - Datum/Tijd
En het criterium wordt dan:
Between [Typ de Startdatum:] And [Typ de Einddatum:]
Hoop dat het zo wat duidelijker is!