between datum gebruik voor update van een veld

Status
Niet open voor verdere reacties.

MaitreJan

Gebruiker
Lid geworden
21 dec 2011
Berichten
57
ik heb de volgende vraag:

ik heb 2 tabellen:
tblSchooljaar, daar in staan een begindatum - einddatum en schooljaar
1-8-2020 - 31-07-2012 - 2021 enz

een andere tabel daar in staat een datum waar aan ik het school jaar wil verbinden met een update in die tabel

dus de datum is bijv 2-3-2021 dan wil ik een veld update met de info 2021

hoe kan ik dat in acces regelen?

hoop dat het duidelijk is anders hoor ik graag

grt Jan
 
Waarom een extra veld in je tabel? Dat is niet alleen redundantie (het schooljaar is heel makkelijk af te leiden uit één van de twee datums) maar kan ook leiden tot inconsistentie (wie houdt mij tegen om dit in te vullen: begindatum: 1-8-2020, - einddatum: 31-07-2012 en en schooljaar: 2019? Normaal gesproken is het zo dat je gegevens die je (makkelijk) kunt afleiden uit andere gegevens niet opslaat in je tabel. In dit geval is het schooljaar overigens niet eens goed af te leiden, omdat er 8 jaar negatief verschil zit tussen begin- en einddatum. Dat zou natuurlijk al helemaal niet mogen..... Eigenlijk is óók de Einddatum dus een gegeven dat is af te leiden uit de begindatum :).

Maar als je de tabel dus correct inricht, kun je in de query waarin je het schooljaar nodig hebt dat heel makkelijk berekenen. Bijvoorbeeld:
Schooljaar: Year([Einddatum]). Of: Schooljaar: Year([Begindatum]+1). Ik geef maar wat voorbeelden.
 
dank je wel, zo had ik er niet naar gekeken, ik ga het eerst proberen met wat je schrijft door het jaar van een datum te gebruiken.

als dat niet lukt meld ik me wel opnieuw

grt Jan
 
Aangezien de begin- en einddatum van een schooljaar afhangen van de regio en omstandigheden (denk maar aan de Corona-crisis) zou ik zeker in de tabel schooljaren de begin- en einddatum bijhouden. En zoals vaak is de praktijk niet altijd gelijk aan de theorie. Denk aan de 80/20 regel die op veel vlakken wordt gehandhaafd, voor database design volg ik meestal de 90/10 regel: voor 90% worden de regeltjes gevolgd, maar waar dit praktische bezwaren oproept wordt het gezond verstand gevolgd. In dit geval zou ik zeker aanraden om in je tabel het schooljaar ook in een apart veld op te nemen en niet nog eens extra te berekenen. Je moet het ook niet te ingewikkeld maken alleen maar om de regeltjes te volgen. Je kan namelijk overal typfouten maken, ook in de begindatum van het schooljaar. Als je meerdere gegevens hebt staan valt een typfout in dat ene gegeven des te sneller op :-) .

Als je een tabel met schooljaren hebt, en een tabel met bijvoorbeeld schoolevenementen met een evenements datum kan je die op de volgende manier aan elkaar verbinden:

in mijn voorbeeld:Crossjoin.JPG

de query:
Code:
SELECT tblSchooljaar.sjJaar, tblSchooljaar.sjOmschrijving, tblSchoolEvenementen.seDatum, tblSchoolEvenementen.seOmschrijving
FROM tblSchoolEvenementen, tblSchooljaar
WHERE (((tblSchoolEvenementen.seDatum)>=[sjBegindatum] And (tblSchoolEvenementen.seDatum)<=[sjEinddatum]));

resultaat:
SchooljaarQR.JPG
 
dank je wel

dit is wat ik nodig heb, ga hiermee aan de slag en het verder uitwerken

en sluit deze aanvraag

groet Jan
 
Je kan namelijk overal typfouten maken, ook in de begindatum van het schooljaar. Als je meerdere gegevens hebt staan valt een typfout in dat ene gegeven des te sneller op :-) .
Hoe meer niet-gerelateerde velden, hoe meer kans op typefouten. Voorkomen van typefouten (en extra werk, want je moet meer doen) lijkt mij dus altijd aan te reden boven 'zogenaamde' ingewikkeldheid. Het berekenen van een jaartal kost namelijk hoegenaamd geen tijd, en vertraagt het proces dus niet.
Aangezien de begin- en einddatum van een schooljaar afhangen van de regio en omstandigheden (denk maar aan de Corona-crisis)
Lijkt mij dat TS maar voor één school de data hoeft bij te houden, en dat dit aspect dus niet van toepassing is. Al zou het natuurlijk kunnen. In dat geval zou ik sowieso andere tabellen maken. Maar het lijkt mij dat in dit geval de schooljaren redelijk vast liggen qua structuur. Je mág het natuurlijk moeilijker maken dan nodig. Iedereen heeft immers recht op ontberingen :).
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan