dBirth = {^1961/1/19} oAge = Createobject("age") *oAge.CalcAge(dBirth, dTarget) oAge.CalcAge(dBirth) ? oAge.Years, oAge.Months, oAge.Days ? Gomonth(tdBirth,oAge.Years*12+oAge.Months)+oAge.Days Define Class age As Relation Years=0 Months=0 Days=0 Procedure CalcAge Lparameters tdBirth, tdTarget Local ldTemp, ldBirth, lnDrop tdTarget = iif(empty(tdTarget),date(),tdTarget) If tdBirth > tdTarget ldTemp = tdTarget tdTarget = tdBirth tdBirth = ldTemp Endif ldBirth = Date(Year(tdTarget),Month(tdBirth),Day(tdBirth)) lnDrop = 0 If Empty(ldBirth) && leap case ldBirth = Date(Year(tdTarget),3,1) lnDrop = Iif(Month(tdTarget)<=2,0,1) Endif With This .Years = Year(tdTarget) - Year(tdBirth) - (Iif(ldBirth > tdTarget,1,0)) .Months = (Month(tdTarget) - Month(tdBirth) + 12 - ; (Iif(Day(tdBirth)>Day(tdTarget),1,0)))%12 .Days = tdTarget - Gomonth(tdBirth,.Years*12+.Months) - lnDrop Endwith Endproc EnddefineCetin