onkosten en factuurdatabaseje maken

Status
Niet open voor verdere reacties.

zzpdree

Nieuwe gebruiker
Lid geworden
3 mrt 2012
Berichten
2
Hoi,

ik ben Andre, kom uit zeeuwsvlaanderen en ik heb een toetsenbord met kuren. Dat zal nog wel blijken...
ik ben 45, en bouwkundig ingenieur.. getrouwd, twee kids, 4 en 1

Ik ben best ervaren met het maken van query's met coognos-impromptu, mmaar nog niet met access. Helemaal niet zelfs, ik moet alles nog opzoeken. Ik ben zzp-er en ik wilde een simpel onkosten en factuurdatabaseje maken. Maar dat valt tegen. Ik weet wat ik wil , maar niet hoe ik dat kan krijgen. Ik heb een tabel met de onkosten en een formuler om die tabel te vullen. Nu heb ik ook een query die selecteert op maand. ik zou een knop voor elke maand kunnen maken, maar dan moet ik volgend jaar alle knoppen weer opnieuw maken. Met parameters wilde ik met de invoer 1 t/m 12 de maand kiezen waarvan ik het overzicht wil hebben, maar dat lukte niet. ik heb nu een query die zoekt naar alle onkosten met datum >=1-3-2012 AND <1-4-2012.

hoe laat ik 2012 altijd het huidige jaar zijn ? dan maak ik 12 knoppen
. Moet ik dan ook 12 query's maken ?
 
Hallo André, welkom bij het forum! Ik hoop dat je in je database meer dan één tabel hebt, want anders heb je nog wel wat werk voor de boeg ;)
Wat betreft je vraag: je hoeft natuurlijk geen 12 queries en/of knoppen te maken; simpel gezegd kun je met één query volstaan, waarin je een dynamisch filter maakt. Dat filter kan op basis van datums zijn, of wat je eigenlijk maar wilt. Een voorbeeldje van een criteriumfilter dat altijd de records van de laatste gehele maand laat zien (behalve januari overigens):
Code:
Between DateSerial(Year(Date());Month(Date())-1;1) And DateSerial(Year(Date());Month(Date());1)
 
Laatst bewerkt:
daar ga ik hoor, met de eerste vraag; wat is en waarom gebruik je dateserial ?

Ik zie Year(date(), dat is een jaar-selectie op basis van datum-vandaag. Verder zie ik tussen haakjes -1 staan, dat is omdat ik ten opzichte van de huidige maand 1 maand terug wil kijken. Snap ik, maar waarom dan nog een 1 er achter ? om slechts 1 maand te tonen en geen twee ?
 
Met DateSerial bouw je een datum op. Je wilt variabele maandselecties zien (althans, je geeft dat als voorbeeld) en dat kan op deze manier dus prima. Een datum bestaat, zoals je wel weet, uit een Jaar, een Maand en een Dag. Het jaar wordt in deze formule opgebouwd door het jaar te berekenen uit de huidige datum (met Year(Date()) ), en de maand doe je met de functie Month(Date()). Omdat je altijd met dag 1 begint, hoef je daar geen formule voor te verzinnen; het intypen van 1 is bij Dag voldoende. Month(Date())-1 rekent dus de vorige maand uit, vandaar -1. Hopelijk is de berekening nu wat duidelijker. Nu zie je vermoedelijk ook dat je een probleem hebt met deze formule in Januari, want Month(Date())-1 rekent nu December uit. En als het jaartal ook wordt berekend op basis van januari, dan pak je dus niet december van het vorige jaar. Dat kun je uiteraard wel ondervangen, bijvoorbeeld door de formule zo te maken:
Code:
Between DateSerial(Year(Date()) - IIF(Month(Date())=1;1;0);Month(Date())-1;1) And DateSerial(Year(Date());Month(Date());1)
Nu krijg je als startdatum ofwel 2012-1 (als de maand 1 is) ofwel 2012-0 (bij de overige maanden).
 
Laatst bewerkt:
Ook januari gaat goed!
DateSerial(2012, 0, 1) geeft als datum 1-12-2011
 
Dank voor de tip! Die had ik zo nog niet geprobeerd, maar is inderdaad wel logisch. Als januari 1 is, dan is 0 natuurlijk december ervoor.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan