Query met datum (vervolg)

  • Onderwerp starter Onderwerp starter ejot
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

ejot

Gebruiker
Lid geworden
27 mei 2009
Berichten
14
Ik open dit topic omdat mijn originele vraag in een ander topic is geplaatst wat op dit moment is gesloten.

Zit met een probleem met een jaartal in een query. In de data is in veel gevallen geen einddatum ingevuld, dit omdat ze in principe oneindig zijn (tot opzegging). Nu werkt mijn query nog niet helemaal omdat die alle lege cellen weglaat als ik hem nu draai. Hieronder de expressie:

IIf(IsNull([Forms]![Formulier1]![Eindjaar]); [Data]![Eindjaar];[Forms]![Formulier1]![Eindjaar ]).

Als ik nu op het formulier als eindjaar 2009 pak samen met de overige variabelen dan werkt die prima. Maar als ik nu andere variabelen wel aanklik maar er geen eindjaar bij kies dan pakt die alle records die voldoen aan de overige variabelen en waar er een eindjaar is ingevuld. Dus alle records zonder einddatum worden weggelaten.

Weet iemand hiervoor een oplossing?

ejot
 
Je kan deze variant proberen:

IIf(IsNull([Forms]![Formulier1]![Eindjaar]);IIf(IsNull([Data]![Eindjaar]) ;Year(Date());[Data]![Eindjaar]);[Forms]![Formulier1]![Eindjaar ])

Hiermee vervang je een leeg EindJaar door het jaar van vandaag.
Michel
 
Heb het geprobeerd en werkt ook niet. Denk dat het komt doordat de onderliggende info ook van een query afkomt en niet van een tabel.
 
Bedoel je hiermee dat [Data]![Eindjaar] uit een query komt? In dat geval zou je kunnen proberen om dat IIF deel in de oorspronkelijke query op te nemen:

IIf(IsNull([Data]![Eindjaar]) ;Year(Date());[Data]![Eindjaar])

Dan heb je in ieder geval altijd een jaar in je query staan.

Michel
 
Als ik dat doe dan neemt die het huidige jaar als criteria in het draaien van de query. Dus dan krijg ik alleen de records met een einddatum in het huidige jaar. De expressie wordt dus als criteria gepakt en vervangt niet de data.

Ik zal mijn probleem hieronder wat beter proberen uit te leggen.

Ik heb twee tabellen (deze zijn gekoppeld met een ODBC-database).
Van deze twee tabellen heb ik een query (Data) gemaakt. Hierin staan de kolommen die van belang zijn uit de tabellen + 2 gecreerde kolommen. 1 met het beginjaar (deze is met de expressie "Year([Tabel 1]![StartingDate]) Or Is Null" uit tabellen gehaald. De tweede kolom is het eindjaar "Year([Tabel 1]![ExpirationDate]) Or Is Null". Dit werkt allemaal. Als ik deze query opvraag dan geeft die alle records. Ook diegene waarbij er geen ExpirationDate is ingevuld. De kolom Eindjaar blijft dan leeg.

Dus tot zover werkt alles zoals de bedoeling is. Dan nu het tweede deel. Op basis van deze eerste Query (Data) heb ik een tweede gebaseerd (Zoeken). Deze heeft dezelfde kolommen. Enkele van de variabelen heb ik als optie aangeven op een formulier (Formulier1) en deze worden gebruikt om de query Zoeken te draaien. Denk hierbij aan de variabelen "Looptijd" of "Status". Dit heb ik verwerkt in de query met de volgende expressie:

IIf(IsNull([Forms]![Formulier1]![looptijd data]);[Data]![Looptijd];[Forms]![Formulier1]![looptijd data])

Dit werkt allemaal prima. Ook als er enkele variabelen niet worden gekozen dan klopt het allemaal. Het zelfde doe ik bij de variabele "beginjaar".

IIf(IsNull([Forms]![Formulier1]![Beginjaar data]);[Data]![Beginjaar];[Forms]![Formulier1]![Beginjaar data])

Ik gebruik dus niet meer de kolom met de hele datum maar alleen nog de zelf gemaakte kolommen "beginjaar"" en "eindjaar".

Dit werkt ook prima. Doe ik het echter bij "eindjaar" dan werkt het zolang er een jaartal wordt gekozen. Doe ik dit niet dan worden alleen die records weergegeven die een einddatum hebben (en dus een eindjaar).

IIf(IsNull([Forms]![Formulier1]![Eindjaar data]);[Data]![Eindjaar];[Forms]![Formulier1]![Eindjaar data])

Het probleem zit hem dus in het feit als er geen einddatum wordt ingevuld en dat dan niet alle gegevens worden meegenomen in de query.

Ik hoop dat het probleem nu wat duidelijkere is. Hopelijk kun je me ermee helpen want ik ben ondertussen al twee dagen bezig en kom er niet uit. :confused:

Ejot
 
Ik begin te denken dat je probleem ligt in het afvangen van de status van je formulierveld. Je gebruikt nu alleen IsNull([Forms]![Formulier1]![Eindjaar data]) als vergelijking; je kunt eens kijken wat-ie doet als je dat vervangt door [Forms]![Formulier1]![Eindjaar data]="" . Een veld op een formulier is per definitie een tekstveld, die leeg is, of gevuld. Deze variant zou ook nog kunnen helpen: [Forms]![Formulier1]![Eindjaar data] =Null .

Kijk eens of dit helpt?

Michel
 
Michel,

Ik zal deze oplossing volgende week proberen. Heb nu een lang weekend dus zal het daarna eens proberen en het laten weten.

ejot
 
Hoi,

Ben even bezig geweest met de database opnieuw op te bouwen. Hierdoor waarschijnlijk een hoop troep eruit gelaten en nu is het me wel gelukt. het probleem zat denk ik toch in het feit dat ik teveel queries op elkaar had zitten waardoor er iets niet werkten.

Toch bedankt voor alle hulp.

ejot
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan