Datumbereik

Status
Niet open voor verdere reacties.

jochendecraene

Gebruiker
Lid geworden
9 jul 2014
Berichten
14
Hallo

Is het in acces mogelijk om een query te maken waarbij gekeken wordt naar het aantal jaren dat tussen 2 data ligt?

Concreet:

Ik heb 3 projecten waarbij een start- en einddatum zijn geregistreerd en waaraan allerlei acties gekoppeld zijn:
- project 1, startdatum 1/11/2023 en einddatum 4/5/2027
- project 2, startdatum 4/2/2024 en einddatum 1/8/2027
- project 3, startdatum 4/2/2023 en einddatum 1/9/2025

De acties die aan deze projecten gekoppeld zijn hebben een start- en einddatum binnen de looptijd van hun respectievelijke projecten.

Ik wil nu overzichtelijke jaaractieplannen maken op basis van de acties die zullen lopen in een bepaald jaar

- dus alle acties van de 3 projecten in 2023
- alle acties van de 3 projecten in 2024
- en zo verder voor de komende jaren 2025, 2026, 2027

Kan dit in Acces en kan iemand me helpen deze query te schrijven?

dank om te bekijken!
 
Zonder voorbeeld database is het gokken, maar uitgaande van minimaal een Tabel Project en tabel Actie, beide tabellen met minimaal kolommen ProjectId, Startdatum en Einddatum, gekoppeld via ProjectId

In pseudocode:
Selecteer alle acties uit tabellen Actie, Project met
Project.Projectnummer = opgegeven projectnummer én
Actie.ProjectId = Project.ProjectId én
Actie.Startdatum.Jaar <= opgegeven jaar én
Actie.Einddatum.Jaar >= opgegeven jaar
 
Dat kan inderdaad prima, maar zoals AHulpje al zei: doe er een voorbeeld bestand bij met dummy data. Wil je het overzichtelijk, dan ontkom je niet aan een formulier of een rapport met tijdbalken, lijkt mij.

De database eerst Comprimeren en herstellen, en dan zippen. Je kunt een database namelijk niet posten op HelpMij.
 
Je zegt dat de acties een start- en einddatum hebben. Ze kunnen dus over de jaargrens heen lopen (neem ik aan). Tellen die in alle jaren dat de actie loopt mee?

Je zegt ook dat de de acties moeten vallen binnen de grenzen van het project. Logisch, maar kennelijk vind je het geen probleem dat af te dwingen. Dit speelt niet alleen bij het invoeren van gegevens, maar ook bij het wijzigen. Het is best wel een dingetje dat goed te regelen.
 
Laatst bewerkt:
Je zegt dat de acties een start- en einddatum hebben. Ze kunnen dus over de jaargrens heen lopen (neem ik aan).
Kijk eens naar de voorbeeldjaren: die lopen over meerdere jaren. Dat zal dus ook gelden voor de acties.
 
Zonder voorbeeld database is het gokken, maar uitgaande van minimaal een Tabel Project en tabel Actie, beide tabellen met minimaal kolommen ProjectId, Startdatum en Einddatum, gekoppeld via ProjectId

In pseudocode:
Selecteer alle acties uit tabellen Actie, Project met
Project.Projectnummer = opgegeven projectnummer én
Actie.ProjectId = Project.ProjectId én
Actie.Startdatum.Jaar <= opgegeven jaar én
Actie.Einddatum.Jaar >= opgegeven jaar

Dank voor de snelle reacties!

Het is zelfs maar 1 tabel met daarin projecten en de acties (beide met start- en einddatum).

Het formulier en de gerelateerde tabellen zijn gebouwd via power apps. Ik importeer de input van het formulier als een tabel/query in acces omwille van de handige rapportenfuncties.

Als ik naar je code kijk, klopt onderstaande dan:

voor kolom project:
Project.Startdatum.Jaar <= opgegeven jaar én
Project.Einddatum.Jaar >= opgegeven jaar

+

voor kolom acties:
Actie.Startdatum.Jaar <= opgegeven jaar én
Actie.Einddatum.Jaar >= opgegeven jaar
 
Je hoeft alleen de acties te hebben voor een bepaald jaar, dus alle acties die een begindatum hebben die ligt in of voor dat jaar én een einddatum die ligt in of na dat jaar.
Als je die acties groepeert per project dan ben je er.
Maar nogmaals, met een voorbeeld van de tabel valt daar meer over te zeggen.
 
Het is zelfs maar 1 tabel met daarin projecten en de acties (beide met start- en einddatum).
Dat moet je dan als eerste aanpassen. Je hebt hier echt twee tabellen voor nodig. In jouw opzet moet je de datums van het project tig keer vastleggen. En dan hopelijk ook steeds met dezelfde waardes. Projecten lopen standaard uit, dus de einddatum van een project moet je vast weleens aanpassen. Dan wil je dat een keer kunnen doen en niet op tig plaatsen.

Wat betreft de "pseudocode": dat is gewoon een query die je eenvoudig bij elkaar kunt klikken. De query gebruik je als bron voor het rapport. Daar hoef je niet voor te "coderen".
 
Laatst bewerkt:
Voorbeeldbestand opgeladen

Ik heb een zipbestandje met wat dummy data opgeladen.

Ik kan vanuit de app ook de tabel met de projecten opladen in acces zodat de koppeling kan gelegd worden op projectID. Zo kan ik dan werken met 2 tabellen.

Nogmaals dank om te bekijken!
 

Bijlagen

En dan lukt het nu vast ook wel om een query bij elkaar te klikken.
Tip: Year([ActieStartdatum]) <=
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan