Berekenen van verjaardag

  • Onderwerp starter Onderwerp starter astra
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

astra

Gebruiker
Lid geworden
28 jul 2003
Berichten
127
Ik heb volgende formule gebruikt om een verjaardag te berekenen:
=Int((Date()-[Geboortedatum])/365,25)
Maar als ik in het veld Geboortedatum de datum 08/03/1946 tik, resulteert dit in 64.
Is dus niet juist want deze persoon verjaart vandaag en is dus 65.
Hoe pas ik dat aan?

Met dank
Astra
 
Om te beginnen: het is vandaag 7 maart, dus de persoon is pas morgen jarig. Of je woont in een andere tijdzone,dat kan natuurlijk. Geen idee waar Liedekerke onder valt ;)

Maar bovendien is je rekenmethode nogal grof; geen enkel jaar heeft 365,25 dagen. Je zit dus altijd met een afrondingsfactor. Beter is een aparte functie:

Code:
Function LeeftijdBerekenen(Geboortedatum As Date, Peildatum As Date) As Byte
If Format(Geboortedatum, "mmdd") > Format(Peildatum, "mmdd") Then
    LeeftijdBerekenen = DateDiff("yyyy", Geboortedatum, Peildatum) - 1
Else
    LeeftijdBerekenen = DateDiff("yyyy", Geboortedatum, Peildatum)
End If
End Function

Die zet je dan zo op een tekstveld als Besturingselementbron:
= LeeftijdBerekenen(Me.Geboortedatum.Value, Date)
Of in een query:
Leeftijd = LeeftijdBerekenen([Geboortedatum]; Date())
 
Laatst bewerkt:
Oeps.... :o
Klein excuusje : 't is in onze streek Carnaval (Aalst)... en dan slaan onze koppekes wel eens tilt :D
Maar al bij al ook bij 7/3/46 bleef die 64 staan.
Ik heb een nieuwe module gemaakt met jouw code.
De andere code in Besturingsbron gezet (tekstveld) maar kreeg eerst een syntax foutmelding. Ik heb de komma na Value vervangen door ; en alles OK dacht ik, maar
krijg nog een foutmelding in het tekstveld : #Naam?
Bij Naam heb ik LeeftijdBerekenen gezet.

Als ik die 365,25 vervang door 365 klopt de leeftijd wel!
Ik heb die formule ergens opgepikt en dacht dat die ,25 iets te maken had met schrikkeljaren.

Beste groetjes,
Astra
 
Zoals ik al zei: een jaar bestaat nu eenmaal niet uit 365,25 dagen. In the long run kom je wel ongeveer goed uit, vanwege schrikkeljaren, maar het is geen goede rekenmethode. Ik heb de code in het voorbeeld verwerkt. Verander maar eens wat geboortedatums...
 

Bijlagen

Beste Michel,

Ondertussen heb ik nog wat zitten zoeken en volgende expressie eens uitgetest in Besturingselementbron:
=DateDiff("yyyy";[Geboortedatum];Date())+(Date()<DateSerial(Year(Date());Month([Geboortedatum]);Day([Geboortedatum])))
Dit werkt perfect!
Van zodra ik in het formulier de geboortedatum verander naar bv. 9/3/1946, verandert de leeftijd onmiddellijk naar 64. Bij terugzetten naar 7/3/1946 verandert deze naar 65.

Ik ga het dus bij deze expressie houden.

Hartelijk bedankt voor je moeite. Ik heb hier al heel wat geleerd!

Tot de volgende vraag ;)

Beste groetjes,
Astra
 
Wat jij makkelijk vindt ;) persoonlijk vind ik de functie een stuk makkelijker in het gebruik en zeker flexibeler, want je kunt twee willekeurige datums gebruiken, maar deze formule werkt uiteraard ook! Mag dit draadje op Opgelost...
 
Ik heb de functie wel behouden want mogelijk dat ik deze toch nog zal gebruiken :thumb:

Deze topic mag dus als opgelost beschouwd worden.

Nog een fijne dag!:)
Astra
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan