Opgelost Leeftijd berekenen

Dit topic is als opgelost gemarkeerd

Friend

Verenigingslid
Lid geworden
31 jan 2009
Berichten
1.128
Beste Forummers,

Uit de archieven (2009) van Helpmij deze code gevonden van OctaFish:

Code:
Code:
'---------------------------------------------------------------------------------------------------------
'//Leeftijd berekenen in query:
'---------------------------------------------------------------------------------------------------------
Leeftijd: DateDiff("yyyy";[Gebdat];Date())+(Int(Format(Date();"mmdd"))<Format([Gebdat];"mmdd"))
'---------------------------------------------------------------------------------------------------------

Dat werkt natuurlijk alleen hij geeft de leeftijd bij mij niet kijkend naar wanneer je geboren bent dit jaar.

Dus b.v. iemand die op 13-12-1975 geboren is wordt nu als 49 jarige gezien. Dat zou eigenlijk 48 jaar moeten zijn.

Ik heb het geprobeerd met Now() maar dat geeft niet het gewenste resultaat.

Hoe is dit aan te passen of op te lossen ?

Friend
 
In een grijs verleden heb ik daar eens een functie gemaakt. De functie werkt met een variabele peildatum, zodat je de leeftijd op elk willekeurig moment kunt berekenen:
Code:
Function LeeftijdOp(Geboortedatum As Variant, Peildatum As Date) As Variant

If IsNull(Geboortedatum) Then
    LeeftijdOp = Null
    Exit Function
End If

If Format(Geboortedatum, "mmdd") > Format(Peildatum, "mmdd") Then
    LeeftijdOp = DateDiff("yyyy", Geboortedatum, Peildatum) - 1
Else
    LeeftijdOp = DateDiff("yyyy", Geboortedatum, Peildatum)
End If

End Function
 
Peter, dank je wel voor je reactie 👍

Ik had de gevonden code in het besturingselementbron van een tekst vak gezet van een formulier. Ik hoef het alleen te zien als ik een formulier open. Dat werkte op zich met de beperking.
Heb echter geen idee hoe ik dit kan verwezenlijken met jouw mooie code. Waar plak ik dit onder?

Friend
 
Bij de 'besturingselementbron' zet je iets als:
Code:
=IIf(IsNull([Gebdat]);"";LeeftijdOp([Gebdat];Date()))
Zo hou je ook rekening met records waarbij de geboortedatum (nog) niet is ingevuld.

De functie plaats je in een nieuw module: Maken - (Macro's en code) - Module
 
Peter, dat werkt subliem, alleen een kleine aanpassing gedaan in de code :)

Code:
=IIf(IsNull([gebdat]);"";LeeftijdBerekenen([gebdat];Date()))

LeeftijdOp werkte niet bij mij.

Dank voor de uitleg voor de module verwerking.

Friend
 
En toch zou jouw oorspronkelijke code ook moeten werken. Die gebruik ik al jaren zonder probleem, ook in queries. Ben ik toch benieuwd waarom hij bij jou niet werkt :). Misschien moet je de Int weghalen.
Code:
Leeftijd: DateDiff("yyyy";[Gebdat];Date())+(Format(Date();"mmdd"))<Format([Gebdat];"mmdd")
Het tweede stuk levert namelijk True or False op, in Access is dat -1 of 0. Getallen dus. En die trek je dan af van de leeftijd (-1) of niet (0). Heel simpel. Maar het kan natuurlijk ook ingewikkelder met de oplossing van Peter :). En Now maakt natuurlijk nooit een verschil, omdat je dan alleen de tijd toevoegt.
 
Terug
Bovenaan Onderaan