Aantal maanden berekenen in een bepaald jaar

Status
Niet open voor verdere reacties.

Jolijn90

Gebruiker
Lid geworden
17 sep 2014
Berichten
7
In de database in Access heb ik informatie over de startdatum en de einddatum van een project (dat zijn twee verschillende kolommen). Nou lukt het me om het totaal aantal maanden te berekenen van begin tot eind. Maar we willen bijvoorbeeld ook het totale budget berekenen over 2013. Daarom wil ik het aantal maanden berekenen van 2013. Ik heb verschillende dingen geprobeerd, maar kom er niet uit. Weet iemand hoe ik dit kan doen?
 
Ik bedoel wat anders inderdaad! ;) Sommige projecten lopen van 2010 tm 2015 en dan heb je inderdaad 12 maanden in 2013. Maar sommige projecten lopen vanaf april 2013 tm 2016. Er zijn meer dan 200 projecten, dus is er een manier waarop je dat automatisch kan laten berekenen?
 
Tja, goedkope grappen en open deuren liggen natuurlijk om de hoek als je de vraag zo stelt, en dan is er altijd wel een vrolijkerd te vinden die hem inkopt :).
Je vraag is niet zo lastig te beantwoorden overigens. Als ik zou weten wat je precies als resultaat wilt zien. Je hebt neem ik aan één record met daarin de projectgegevens zoals de begindatum en einddatum, en die twee van elkaar aftrekken is niet zo moeilijk. Al kan dat nog een beetje tricky zijn als je datums als 10-4-2012 en 14-5-2015 hebt en 14-4-2012 en 10-5-2015. Lopen die 2 projecten evenveel maanden? Als het goed is loopt het eerste voorbeeld een maand langer. Maar wil je de looptijd zien voor één jaar? Of wil je een resultaat waarin je voor elk jaar een apart record wilt hebben?
 
Ik heb inderdaad één tabel met projectgegevens. Op dit moment 120 records, dus het is te veel om het handmatig te berekenen. De startdatum is vaak het moment van toestemming dat ze daadwerkelijk het project mogen uitvoeren, dus de ene keer is dat inderdaad 14/05/2012 en de andere keer is dat 24/05/2012 etc. En dan krijg je inderdaad verschillen te zien van een maand.

Ik weet dus het totale budget voor de gehele periode. En nu wil ik gewoon het budget voor een bepaald jaar van alle projecten berekenen. Ik wilde dit gaan doen door het totale budget te delen door het totaal aantal maanden en dan keer het aantal maanden in bijvoorbeeld 2013. Alle projecten hebben andere looptijden, dus sommige projecten lopen niet in 2013 en andere projecten beginnen dus halverwege en andere projecten lopen heel 2013. Wat ik dus wil is aan de hand van de startdatum en de einddatum van het project berekenen hoeveel maanden een bepaald project in 2013 loopt (of in 2014, 2015 etc). Ik hoop dat mijn vraag nu wat duidelijker is ;)
 
Je weet het budget, en de begin- en einddatum dus je kunt met een Cartesisch product query 'eenvoudig' laten zien wat de budgetten per jaar zijn per project. Het enige wat je nodig hebt is een tabel met daarin de loopjaren die je wilt zien. Als het eerste project in 2007 is begonnen, en de laatste in 2021 eindigt, moet je in de tabel tJaren (met daarin één veld: [Jaargang]) dus records maken met daarin de waarden 2007, 2008 .. 2022. Of verder natuurlijk, als je ook de toekomst voor wilt zijn.
Die tabel neem je op in een query samen met de tabel [Projectgegevens]. Pak de velden uit [Projectgegevens] die je wilt zien en het veld [Jaargang], en voer de query voor de gein een keer uit. Je ziet nu elk project gecombineerd met elk jaartal in [Jaargang]. Dit resultaat is dus een Cartesisch product: elk record uit Tabel1 gecombineerd met elk record uit Tabel2.

Da's nog niet wat je wilt zien, want jij bent alleen geïnteresseerd in de jaartallen waarin het project loopt. Dus je moet ook de jaren van begin- en einddatum hebben. Maak je simpel met de formules StartJaar: Year([Startdatum]) en EindJaar: Year([Einddatum]). En nu wil je uiteraard alleen de jaren zien per project, en daarvoor maak je 1 criterium op het veld [Jaargang]: >=Year([Startdatum]) And <=Year([Einddatum])
En nu zie je voor elk project één of meer records, voor elk jaar dat het project loopt één.

Het enige dat je nu nog hoeft te doen, is een formule te maken die voor elk record het aantal maanden dat het in dat jaar loopt uit te rekenen. Daar kun je een IIF voor maken. Omdat ik niet alle gras onder je voeten vandaan wil maaien, mag je daar zelf even op kauwen :). Hier nog ter inspiratie de query die ik heb gebruikt voor dit voorbeeld.
Code:
SELECT ProjectID, ProjectNaam, Startdatum, Einddatum, Budget, Jaargang, Year([Startdatum]) AS StartJaar, Year([Einddatum]) AS EindJaar
FROM tJaren, tProjecten
WHERE (Jaargang>=Year([Startdatum]) And Jaargang<=Year([Einddatum]))
ORDER BY ProjectID, Jaargang;
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan