Leeg formulierveld in query - alle waarden weergeven

Status
Niet open voor verdere reacties.

wavabie

Gebruiker
Lid geworden
10 feb 2015
Berichten
7
Ik heb een formulier waarop oa een veld [Jaar],[Kwartaal] en [Maand] kunnen ingevuld worden. Deze velden zijn gekoppeld aan de query-velden ‘Jaar: Format$([Datum];”jjjj”)',Kwartaal: Form... en Maand:Form..... Nu zou ik als output van de query willen dat wanneer het formulierveld ‘Jaar’ en 'Kwartaal' zijn ingevuld de records worden weergegeven voor de maanden vallende in de combinatie van Jaar en kwartaal. Alvast bedankt!
 
Je gebruikt een rare constructie, waarom niet één datumveld? Dan weet je gelijk de dag, de maand, het kwartaal, het jaar, de eeuw.... Wat ik bedoel te zeggen is dus dat al die gegevens gewoon zijn af te leiden uit één veld. Nu laat je een gebruiker 3 velden invullen. Niet erg gebruiksvriendelijk! En dat niet alleen: iemand die bij Kwartaal 2 invult, en bij maand 11 heeft volgens mij een stevig probleem...
Daarnaast gebruik je ook nog eens onhandige formules: Jaar: Format$([Datum];”jjjj”) moet je natuurlijk vervangen door Jaar: Year([Datum]). Niet alleen heb je nu een getal als uitkomst (en een jaartal is een getal), de code is ook een stuk makkelijker.

Om antwoord te geven op je output: dat lijkt er op dat je een query wilt filteren op het jaar dat is geselecteerd, en het kwartaal. Daarvoor maak je in de query een veld Kwartaal met de formule Kwartaal: DatePart("q";[Datum];2;2)
En voor jaar maak je dus een veld Jaar:Year([Datum]) En je filtert die 2 velden op de velden uit je formulier.
 
Werkt. Dank!

Klopt dat in bepaalde gevallen de combinatie kwartaal/maand geen resultaat kan opleveren. Voor deze combinatie zou gewaarschuwd worden via een berichtenvenster.
Het is de bedoeling de gebruiker een maximale keuzemogelijkheid te geven. Volgende combinaties zouden mogelijk moeten zijn: jaar/kwartaal, jaar/maand, bepaald kwartaal van alle jaren en bepaalde maand van alle jaren. Aan de hand van uw geboden oplossing (waarvoor nogmaals dank) in combinatie met deze uit "Parameter in Query op basis van formulierveld (leeg)", denk ik, dat het zou moeten lukken. Of kan het minder omslachtig ?
 
Het kan zeker minder omslachtig :). Een gebruiker een bericht voorschotelen als hij/zij een onmogelijke combinatie kiest is in ieder geval in mijn ogen erg gebruiksonvriendelijk. Tenzij het een plaatje van een opgestoken vinger is... Je moet natuurlijk iets maken waarin verkeerde keuzes maken onmogelijk is. En dat is nog makkelijker ook. Althans: voor de gebruiker. Doorgaans houdt gebruiksgemak aan de voorkant wat meer werk aan de achterkant in. Maar dat mag natuurlijk nooit een beletsel zijn :).

Hoe zou ik het doen? Er van uit gaande dat de output een (doorlopend) formulier of een rapport is, zou ik de query die daar onder hangt opbouwen met VBA en die query steeds aan de query van het rapport koppelen. Die query bouw je dan op op basis van één datumveld voor het selecteren van de periode, en een paar groepsvakken met radiobuttons. Één groepsvak gebruik je dan om de periode te selecteren (jaar, kwartaal, maand, dag) die dus op basis van de geselecteerde datum wordt bepaald. En één groepsvak voor de duur: huidig jaar, vorig jaar, alle jaren etc.
Wil je meer selecties aanbieden, dan maak je daar ook een groepsvak o.i.d. voor. Op basis van de gekozen opties bouw je dan de SQL string op die je met de QueryDefs collectie aan de query toewijst.
Iedereen blij...
 
Lijkt mij wel handig. Helaas met SQL en VBA ben ik niet vertrouwd. Mijn programmeerwerk, excuseer voor de benaming, is beperkt tot de gangbare queries, formulieren, keuzevelden, knoppen ... Nu, de database die ik maak, voor de fun trouwens, is voor persoonlijk gebruik. Het berichtenvenster is eerder bedoeld voor de kinderen. Als ik de SQL van mijn queries bekijk kan ik enigszins wat volgen maar ben zeker niet in staat om er zelf een te maken. Het niet kennen van de commando's, regels, enz... zijn het euvel.
 
Dan zou ik zeggen: bekijk de Access cursus eens in de Handleidingen sectie :). Daar wordt de aangegeven techniek uitgebreid in behandeld namelijk. En we zijn ook niet te beroerd om in jouw db een voorzetje te maken, als je die wilt posten. Het is namelijk allemaal redelijk standaard. D.w.z dat ik de techniek ondertussen dermate goed uitgekristalliseerd heb dat ik er nog nauwelijks tijd aan kwijt ben om iets te maken.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan