Query filteren

Status
Niet open voor verdere reacties.

wacco

Gebruiker
Lid geworden
9 mrt 2006
Berichten
229
Hallo,
Ik heb met behulp van dit forum, een oplossing gevonden voor het probleem als bij een query criteria geen data wordt ingevoerd.
Dit werkt perfect.
Maar nu wil ik ook nog filteren tussen 2 verschillende datums, dit lukt niet op dezelfde manier als met de andere velden.
Dit is wat ik nu heb,....maar waarbij dus de onderste regels met DatumVan en DatumTot niet werken.

Code:
WHERE (((IIf([Forms]![FRM Draaitabel]![IDTagType] Is Null,True,[TBL_TagLijst].[ID typetag]=[Forms]![FRM Draaitabel]![IDTagType]))<>False) AND
 ((IIf([Forms]![FRM Draaitabel]![IDMachinedeel] Is Null,True,[TBL_TagLijst].[ID machinedeel]=[Forms]![FRM Draaitabel]![IDMachinedeel]))<>False) AND
 ((IIf([Forms]![FRM Draaitabel]![IDProductielijn] Is Null,True,[TBL_TagLijst].[ID productielijn]=[Forms]![FRM Draaitabel]![IDProductielijn]))<>False)) AND
((IIf([Forms]![Forms]![FRM draaitabel]![DatumVan] Is Null,True,[TBL_TagLijst].[Datum gemeld]>=[Forms]![FRM draaitabel]![DatumVan]))<>False) AND
 ((IIf([Forms]![Forms]![FRM draaitabel]![DatumTot] Is Null,True,[TBL_TagLijst].[Datum gemeld]<=[Forms]![FRM draaitabel]![DatumTot]))<>False);

Als ik de query zonder formulier start, wordt ook twee keer gevraagd om DatumVan en DatumTot in te voeren.
Als ik hier geen data invoer, krijg ik dus een lege query.
Kan iemand mij helpen, blijf hier maar op vast lopen.

B.v.d
 
Ik denk dat je ondertussen eens moet gaan nadenken of je het formulier niet beter via VBA kan filteren, want dit wordt er bepaald niet overzichtelijker op. En je uitbreiding gaat daar ook niet bij helpen. Je zult je datumfilter in één veld moeten zetten, en dat doe je nu niet; je maakt nu voor elk datumveld een eigen formule. Maar dat kan dus niet. Ik weet ook niet wat je precies wilt zien; als er een DatumVan en een DatumTot is, dan vermoed ik dat je alles tussen die twee datums wilt zien. Als DatumTot leeg is, wordt het wat lastiger. Ofwel je wilt de records niet zien (je wilt alleen de afgeronde zien), ofwel je wilt ze wél zien, maar dan mag je er niet op filteren. Ik neem aan dat een DatumVan leeg en DatumTot gevuld niet voor kan/mag komen, want dat lijkt niet logisch.
 
@Octafish,

De bedoeling is dat via een formulier de filtering van de query wordt gevuld.....maar dat had jij vast al gezien.
Verder zou het mogelijk moeten zijn dat niet alle velden gevuld worden maar dat de filtering wel klopt op de velden welke wel gevuld zijn.
Vandaar de filtering op de verschillende velden.
Wat betreft de beide datum velden, is het inderdaad de bedoeling dat de er wordt gefilterd tussen de twee ingevulde datums....en ook eventuele andere ingevulde velden.
Als ik dat in de query, in het criteria veld plaats, met de code
Code:
Between [Forms]![FRM Draaitabel]![DatumVan] And [Forms]![FRM Draaitabel]![DatumTot]
dan klopt de filtering niet meer als er geen datum in deze velden staat.
In het formulier, waarmee de query wordt gefilterd, is het niet mogelijk om een datum in te vullen in het veld DatumTot als er geen (eerdere) datum is ingevuld in het veld DatumVan.

Alles werkt goed, behalve het gedeelte van de datum filtering, de vraag is dus eigenlijk :
Hoe zou de code in het criteria gedeelte eruit moeten zijn, als de filtering ook moet werken als op beide datum velden geen datum is gekozen, of dat alleen het veld DatumVan is gevuld.

Hopelijk geeft dit een beter beeld van wat ik eigenlijk voor ogen heb.

Gr,
 
Des te meer reden om te filteren via een VBA functie :). Ik heb in dit forum al regelmatig een voorbeeld gepost van een functie die filtert op een aantal al dan niet ingevulde velden. Daarbij loop je door de aangewezen filtervelden, en als ze niet leeg zijn gebruik je die velden om een filter op te bouwen. Zijn ze leeg, dan sla je die velden uiteraard over. Kortom: dynamisch filteren is prima te doen, maar kan niet zonder een UDF.
 
Ik heb nu de volgende code in het criteria veld van de datum staan :
Code:
Between Nz([forms]![FRM Draaitabel].[DatumVan];#1-1-1900#) And Nz([forms]![FRM Draaitabel].[DatumTot];#1-1-2100#)

Als nu de query filtering via het daarboven liggende formulier wordt gevuld werkt alles naar behoren.
Ik kan het datum veld DatumVan leeg laten, en de juiste filtering wordt toegepast.
Overige velden werkte al eerder.
Oplossing heb ik (denk ik) wel gevonden,.....maar ga toch nadenken over de andere procedure welke Octafish voorstelde.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan