Parameterquery: VANAF weeknr x.

Status
Niet open voor verdere reacties.

Floor2011

Gebruiker
Lid geworden
27 apr 2011
Berichten
25
Ik wil graag een parameterquery draaien met de criteria, vanaf weeknummer x. Het verleden is voor de zoekopdracht namelijk niet relevant. Ik heb het veld "weeknr", dat weer gebaseerd is op de datum. Nu heb ik bij dat veld als criteria gezet [Weeknr:]. Ik kan natuurlijk ook een 2de (en 3de) criteria toevoegen met [En:], zodat ik verschillende weken kan opgeven, maar het liefst wil ik dat de parameter vraagt om 1 week en dat de query dan alle resultaten geeft VANAF die week.

Iemand suggesties?
 
Je hebt 'm op Opgelost gezet; heb je het antwoord zelf gevonden? Zo ja, dan is het wel aardig om de gevonden oplossing er even bij te zetten voor anderen die de vraag lezen. Die weten natuurlijk zo niet wat je hebt bedacht. Als je de oplossing nog niet hebt: Maak via het menu Queries een of twee parameters aan (bijvoorbeeld Typ de Beginweek en Typ de Eindweek) en roep die als volgt op in je criterium:

Code:
BETWEEN [Typ de Beginweek] AND [Typ de Eindweek]

Hiermee vraag je records op met weeknummers in een reeks. Met het volgende criterium krijg je de records die vanaf een bepaalde week vallen:

Code:
> [Typ de Beginweek]

Bedenk hier wel bij, dat het weeknummer geen rekening houdt met het jaartal; elk jaar gebruikt dezelfde weeknummers, dus je ziet ook records van andere jaren, als je niet ook op een Jaartal filtert.
 
Dank! Ja je hebt gelijk, ik had inderdaad het antwoord gevonden. En dat was: >=[Begin week] en eventueel erachter AND <=[Tot en met week:]

Nu stuit ik wel op een ander probleem en dat is dat ik graag wil dat als je niks invoert, dan alles te zien krijgt. Nu is het zo dat als je niks invoert, je niks krijgt. Met "*" werken is het niet gelukt. Dat werkt wel als je bijvoorbeeld hebt: Like "*" &[Week:]&"*"

Dan kan je 1 week invullen, of niks waardoor je alles krijgt. Hoop dat je hier ook iets voor weet!
 
Dat is op de volgende manier op te lossen:
Maak een veld aan met deze formule:
Code:
IIf([Begin week:] Is Null;Waar;IIf([Eind Week:] Is Null;Waar;Val(Format([datumveld];"ww";2;2)) Between [Begin Week:] And [Eind Week:]))
En geef dit veld het criterium: <>ONWAAR
 
hmm dat lukte niet helemaal. Ik kreeg nu ook als parameterwaarde: Waar (naast "begin week" en "eind week"). En er staat trouwens nergens ONWAAR in de formule, klopt dat?

Even om het iets simpeler te maken. Als ik nu als parameterwaarde een begin datum wil invoeren. Dus in het datumveld heb ik als criteria: >=[Vanaf datum:]. Nu wil ik wederom dat als het leeg gelaten wordt, dat je dan alles ziet.

Hoe specificeer ik dit in een nieuw veld?
 
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.
 
Laatst bewerkt:
Ik heb het als volgt opgelost voor de [Vanaf datum:]. Een nieuw veld met: Expr1: IIf([Vanaf (datum):] Is Null;"“True”, “False”")

Dan heb ik onder het datumveld de criteria: >=[Vanaf (datum):]
en in de rij eronder bij or: heb ik het datumveld leeggelaten, maar onder Expr1: "True" gezet.

Dus als er geen parameterwaarde ingevuld wordt bij Vanaf (datum):, dan laat ie alles zien.
 
Het is inderdaad een stuk makkelijker om op datum te filteren; niet alleen pak je dan automatisch de juiste weken, je hebt ook het jaar gelijk goed. Ik zou het veld [Vanaf datum:] nog wel als Parameter toevoegen, zodat je de datum ook echt als datum kunt invoegen. Een gewone parameter is namelijk tekst, en je filter werkt dan alleen als de datum volledig is ingevoerd. Bovendien heb je nu twee criteria, waar je met één criterium kunt volstaan...
 
hmm dat begrijp ik niet helemaal. Hij werkt nu namelijk goed, of ik nu "3 mei" invul, of "3-5" of "03-05", dat maakt niet uit. Hij pakt het allemaal. En als ik 3-5-2012 invul dan pakt hij niks (omdat er vanaf 2012 nog niks staat).
 
Neemt niet weg dat je twee criteriums hebt waar je er aan één genoeg zou moeten hebben...
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan