Heenan, Lambert
Lambert.Heenan at AIG.com
Thu Jul 31 15:34:42 CDT 2003
Here's another solution... Public Function CalculateAge(datBirth As Date, Optional endDate As Variant) As Long Dim lngNumDays As Long Dim eDate As Date If IsMissing(endDate) Then eDate = Date Else eDate = endDate End If lngNumDays = DateDiff("d", datBirth, eDate) If Day(datBirth) = Day(eDate) And Month(datBirth) = Month(eDate) Then ' it's the actual birthday ' add 1 to compensate for .25 in the division lngNumDays = lngNumDays + 1 End If CalculateAge = Int(lngNumDays / 365.25) End Function Note the second variant (date) parameter. That allows you to calculate the age on any specific date, not just 'today'. Lambert > -----Original Message----- > From: Mark Whittinghill [SMTP:mwhittinghill at symphonyinfo.com] > Sent: Thursday, July 31, 2003 3:52 PM > To: accessd at databaseadvisors.com > Subject: [AccessD] Age calculation function > > Hi all, > > I need an age calculation function to calculate current age from > birthday. > If the person's 30th birthday is on August 1, I want them to be 29 on > July31st. DateDiff rounds up and makes them 30. I made this function > > Public Function CalculateAge(datBirth As Date) As Long > > Dim lngNumDays As Long > lngNumDays = DateDiff("d", datBirth, Date) > > CalculateAge = Int(lngNumDays / 365.25) > > End Function > > > It works, except when today's date is their birthday. In my example, on > their birthday, the function returns 29. The next day it works. It works > for some years on the birthday and not others. How can I make this > foolproof? > > Mark Whittinghill > Symphony Information Services > 612-333-1311 > mwhittinghill at symphonyinfo.com > > > _______________________________________________ > AccessD mailing list > AccessD at databaseadvisors.com > http://databaseadvisors.com/mailman/listinfo/accessd > Website: http://www.databaseadvisors.com