Aantal jaar berekenen

Status
Niet open voor verdere reacties.

Elfje83

Gebruiker
Lid geworden
10 dec 2013
Berichten
22
Hallo, kan iemand me helpen met het vinden van de juiste formule om het aantal jaar te vinden dat iemand ergens werkt? Ik gebruik hiervoor de ingebouwde formules en dan geboortedatum - jaar 01/01/1970 maar nog steeds blijven de personen van het jaar 1967 enz. verschijnen. Ik heb het al op verschillende manieren geprobeerd maar nog steeds lukt het mij niet. Ik moet gebruik maken van de functies year() en now().
Groetjes
 
"Now()"-"Year(#01/01/1970#)" (["Now()"]-["Year(#01/01/1970#)"]) IIf([Now()] - Year(#1970#)[Geboortedatum]<45; "" ; " ") Dit zijn maar enkele van de vele formules die ik geprobeerd heb. Ik denk dat bij Now de datum als tekst of gewoon als jaartal moet bekeken worden. Dit heb ik al geprobeerd met de haakjes en met de aanhalingstekens maar niets werkt. Ik moet enkel de personen in mijn lijst krijgen die jonger zijn dan 45. Ik bekom dit echt niet met de functies now en year.
xxxx
 
Ik snap niet wat je wilt; wil je nu het aantal jaren dat iemand werkt (heb je een veld als [DatumInDienst] nodig) of gaat het om de leeftijd (op basis van het veld [Geboortedatum])? Sowieso doe je het inderdaad verkeerd, want Now() tussen quootjes gaat echt niet werken. Quootjes gebruik je alleen in vergelijkingen met tekst, en datums zijn uiteraard getallen. Now() vind ik als functie ook vreemd, tenzij je bij de geboortedatum ook de geboortetijd vraagt, maar wie weet dat nu :). Dus Date() zou al een betere functie zijn geweest. Maar ook daar red je het niet mee.

Leeftijd berekenen doe je met DateDiff:
Code:
DateDiff("yyyy";[Geboortedatum];Date())+(Date()<DateSerial(Year(Date());Month([Geboortedatum]);Day([Geboortedatum]))) AS Leeftijd
 
Nee, ik wil enkel de records weergeven van de personen jonger dan 45 jaar. Dit met behulp van een functie met now en year. Ik heb al alles geprobeerd maar het lukt me niet. Ik denk dat hij rekent in gewone getallen en niet in jaartallen maar krijg dit niet opgelost.
Groetjes
 
Zoals ik al zei zou je de functie Date() moeten gebruiken, niet Now. Je hebt alleen datums, geen tijden. Dus Now() is een beetje zinloos in dit geval. Had je mijn formule gebruikt, dan had je een extra veld gehad met de leeftijd. Daar zet je dan een criterium op: <45. Meer hoef je niet te doen. Voor het mooie (als de leeftijd niet als getal wordt weergegeven) kun je hem nog converteren naar getal:
Code:
Leeftijd:CInt(DateDiff("yyyy";[Geboortedatum];Date())+(Date()<DateSerial(Year(Date());Month([Geboortedatum]);Day([Geboortedatum]))))
Ik heb de formule nu weergegeven zoals je hem ziet in het queryvenster. De vorige weergave was zoals je hem ziet in het SQL venster. Welke variant je gebruikt hangt dus van je weergave af.
Andere variant is deze:
Code:
Leeftijd45:DateAdd("yyyy";45;[Geboortedatum])
En die filter je dan op: <Date()
Als het goed is, krijg je hetzelfde resultaat.
 
Laatst bewerkt:
Dat is inderdaad een manier. Maar het moet mogelijk zijn met een andere formule. Dit staat ergens in een opgave in een boek van Roger Frans. Het moet dus mogelijk zijn met now en year hoor.
Anders zou ik zeker gebruik maken van de laatste formule hierboven.
Groetjes
 
Now() en Date() doen in beginsel hetzelfde, alleen heb je met Now() Datum+Tijd. Tijd is in dit geval zinloos. Vandaar dat ik Date() gebruik. De boeken van Roger Frans ken ik niet. Daar staat waarschijnlijk tegenover dat hij mijn boeken ook niet kent :)
 
Ah, dat wist ik niet dat dat datum plus tijd is. Dat staat er niet bij. Mag ik vragen welke boeken u gebruikt?
 
Vroeger deed ik veel met het telefoonboek, maar dat bedoel je vast niet ;). Ik heb er wel een paar liggen, maar eigenlijk gebruik ik nauwelijks boeken. Met een beetje gericht zoeken op internet kom je vaak sneller oplossingen voor (je eigen) specifieke problemen tegen. Maar de boeken van Helen Feddema kan ik wel aanbevelen. Eigenlijk zijn er in mijn ogen ook geen slechte boeken meer; het ene boek legt wat meer aandacht op formulieren, een ander meer op queries en een derde weer op VBA. Kies dus een boek dat het beste aansluit bij je eigen interessegebied. En wat ik zelf ook doe: ik koop de boeken vaak op de boekenbeurs, of in een andere ramsj afdeling. Omdat Office versies elkaar snel opvolgen, en de functionaliteit zelden veel verandert, kun je een boek van een oudere versie prima gebruiken bij de nieuwste versies. Zeker als het gaat om basisfunctionaliteiten zoals queries en VBA. Ik gebruik bijvoorbeeld nog steeds voorbeelden uit mijn Access 2000 boeken, die nog steeds niet verouderd zijn! En die boeken kosten bijna niks meer.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan