Создание двух функций для вычисления возраста в месяцах и годах в Access

Дополнительно: требуются экспертные навыки программирования, взаимодействия и многопользовательских навыков.

Эта статья относится к базе данных Microsoft Office Access (ACCDB и .mdb) и к проекту Microsoft Access (APD).

Сводка

В этой статье показано, как создать две функции, которые можно использовать для вычисления возраста человека или вещи на основе указанной даты.

Примечание.

Демонстрацию метода, используемого в этой статье, можно увидеть в примере файла Qrysmp00.exe.

Дополнительная информация

Создание функций

Введите или вставьте следующий код в модуль:

'==========================================================
' General Declaration
'==========================================================
Option Explicit

'*************************************************************
' FUNCTION NAME: Age()
'
' PURPOSE:
'    Calculates age in years from a specified date to today's date.
'
' INPUT PARAMETERS:
'    StartDate: The beginning date (for example, a birth date).
'
' RETURN
'    Age in years.
'
'*************************************************************
Function Age (varBirthDate As Variant) As Integer
   Dim varAge As Variant

If IsNull(varBirthdate) then Age = 0: Exit Function

varAge = DateDiff("yyyy", varBirthDate, Now)
   If Date < DateSerial(Year(Now), Month(varBirthDate), _
                        Day(varBirthDate)) Then
      varAge = varAge - 1
   End If
   Age = CInt(varAge)
End Function

'*************************************************************
' FUNCTION NAME: AgeMonths()
'
' PURPOSE:
'  Compliments the Age() function by calculating the number of months
'  that have expired since the last month supplied by the specified date.
'  If the specified date is a birthday, the function returns the number of
'    months since the last birthday.
'
' INPUT PARAMETERS:
'    StartDate: The beginning date (for example, a birthday).
'
' RETURN
'    Months since the last birthday.
'*************************************************************
Function AgeMonths(ByVal StartDate As String) As Integer

Dim tAge As Double
   tAge = (DateDiff("m", StartDate, Now))
   If (DatePart("d", StartDate) > DatePart("d", Now)) Then
      tAge = tAge - 1
   End If
   If tAge < 0 Then
      tAge = tAge + 1
   End If

AgeMonths = CInt(tAge Mod 12)

End Function

Тестирование функций Age() и AgeMonths()

Чтобы протестировать функции Age() и AgeMonths(), выполните следующие действия.

Важно!

Ниже показано, как изменить дату на компьютере. Убедитесь, что вы выполнили шаг 6, чтобы сбросить дату до текущей даты.

  1. С помощью средства даты и времени в панель управления запишите текущую дату, а затем задайте для даты 3 июня 2001 г.

  2. Откройте модуль или создайте новый.

  3. В меню Вид щелкните Окно интерпретации.

  4. Предположим, что дата рождения вашего друга была 15 ноября 1967 года, а сегодня 3 июня 2001 года. Введите следующую строку в окне Интерпретация и нажмите клавишу ВВОД:

    ? Возраст("11/15/67")

    Обратите внимание, что Microsoft Access возвращает значение 33 (лет).

  5. Введите следующую строку и нажмите клавишу ВВОД:

    ? AgeMonths("11/15/67")

    Обратите внимание, что Microsoft Access возвращает значение 6, указывающее, что прошло шесть месяцев с момента последнего дня рождения этого человека. Вашему другу 33 года и шесть месяцев.

  6. С помощью средства даты и времени в панель управления сбросьте дату до текущей даты, указанной на шаге 1.

Использование функций Age() и AgeMonths()

В следующей процедуре объясняется, как пометить старые заказы, поместив значение возраста в новый элемент управления.

  1. В примере Northwind.mdb базы данных введите функции Age() и AgeMonth() в новом модуле.

  2. Откройте форму Orders (Заказы) в режиме конструктора и добавьте элемент управления "Текстовое поле" без ограничений.

  3. Введите следующую строку в controlSourceproperty нового элемента управления "Текстовое поле":

    =Age([OrderDate]) & " yrs " & AgeMonths([OrderDate]) & "mos"

  4. Просмотр формы в представлении формы. Обратите внимание, что возраст заказа отображается в новом элементе управления "Текстовое поле".

Ссылки

Для получения дополнительных сведений о различиях в датах в Редактор Visual Basic щелкните Справка Microsoft Visual Basic в меню Справка, введите функцию datediff в помощнике Office или мастере ответов, а затем нажмите кнопку Поиск, чтобы просмотреть раздел.