Nog een aanvulling op de queries: die zijn zo gemaakt dat je de parameters kunt invullen, of kunt leeglaten. Als je een datumveld leeg laat, wordt die niet meegenomen in de filtering. Door alle parameters leeg te laten, zie je dus alle records in de tabel.
Als voorbeeld de qeury [qryUrenPerDatum_Overuren]. Daarin zitten twee parameters: [Vanaf?] en [Tot?] Als je [Vanaf?] leeg laat, en [Tot?] invult, zie je alle data vanaf het begin tot de einddatum; vul je [Vanaf?] in en laat je [Tot?] leeg, dan zie je alles vanaf de vanaf datum. Laat je ze allebei leeg, dan zie je dus alle records. De constructie waarmee je dat maakt is de volgende:
Code:
WHERE (((IIf(IsNull([Vanaf?]),IIf(IsNull([Tot?]),True,[WerkurenDatum]<=[Tot?]),IIf(IsNull([Tot?]),[WerkurenDatum]>=[Vanaf?],[WerkurenDatum] Between [Vanaf?] And [Tot?])))<>False));
En maakt gebruik van een geneste IIF functie. In die functie kijk je naar de waarde van de parameters; afhankelijk van of een parameter is ingevuld, wordt een bepaald datumfilter gebruikt. Zijn beide parameters leeg, dan vult de IIF de waarde TRUE in, anders staat er dus een datumfilter. En wel één van de volgende drie varianten:
1. [WerkurenDatum]<=[Tot?]
2. [WerkurenDatum]>=[Vanaf?]
3. [WerkurenDatum] Between [Vanaf?] And [Tot?]
Met het criterium <> FALSE wordt het filter in werking gezet.
Hopelijk snap je een beetje hoe het werkt...