Eerst even het antwoord voor de weekvraag; dan heb je waarschijnlijk ook al het antwoord voor de datum. De volledige code om te kunnen kiezen uit:
a) beginweek
b) eindweek
c) beginweek + eindweek
is deze:
Code:
Expr1: IIf([Begin week] Is Null;IIf([Eind Week] Is Null;Waar;Val(Format([datum];"ww";2;2))<=[Eind Week]);
IIf([Eind Week] Is Null;Val(Format([datum];"ww";2;2))>=[Begin Week];
Val(Format([datum];"ww";2;2)) Between [Begin Week] And [Eind Week]))
Deze code zet je in een nieuw veld in een query, zoals hierboven al uitgelegd. Het veld [Datum] vervang je door je eigen datumveld; dat kan uiteraard een andere naam hebben. Dit veld krijgt een Criterium, en dat is dus: <>ONWAAR. In SQL ziet de query er dan zo uit:
[SQL]PARAMETERS [Begin Week] Short, [Eind Week] Short;
SELECT DATUM, Val(Format([datum],"ww",2,2)) AS Weeknummer
FROM Tabel
WHERE ((IIf([Begin week] Is Null,IIf([Eind Week] Is Null,True,Val(Format([datum],"ww",2,2))<=[Eind Week]),
IIf([Eind Week] Is Null,Val(Format([datum],"ww",2,2))>=[Begin Week],Val(Format([datum],"ww",2,2)) Between [Begin Week] And [Eind Week])))<>False)
ORDER BY DATUM;[/SQL]
Om er een datumfilter van te maken, met een begindatum, einddatum of Begin+Einddatum, of alle records, vervang je de weekcodes door datumparameters, en hoef je uiteraard ook niet meer met FORMAT een weeknummer uit de datum te filteren. De constructie is dus een stuk simpeler.