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

Переводы статьи Переводы статьи
Код статьи: 290190 - Vizualiza?i produsele pentru care se aplic? acest articol.
Для специалистов: материал, изложенный в данной статье, требует высокой квалификации в программировании, включая вопросы взаимодействия и программирования в многопользовательской среде.

Данная статья относится к базам данных Microsoft Access (ACCDB и MDB) и проектам Microsoft Access (APD).

Версия данной статьи для Microsoft Access 2000: 210522 (Эта ссылка может указывать на содержимое полностью или частично на английском языке).
Версия данной статьи для Microsoft Access 97: 290190.
Развернуть все | Свернуть все

В этой статье

Аннотация

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

Примечание. Демонстрацию приемов, используемых в данной статье, можно посмотреть в файле с примерами Qrysmp00.exe. Дополнительные сведения о получении этого файла с примерами см. в следующей статье базы знаний Майкрософт:
207626 База данных Microsoft Access 2000 с примерами запросов доступна для загрузки

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

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

Введите или вставьте в модуль следующий код:
'==========================================================
' Общая декларация
'==========================================================
Option Explicit

'*************************************************************
' ИМЯ ФУНКЦИИ: Age()
'
' НАЗНАЧЕНИЕ:
'    Рассчитывает возраст в годах от заданной до текущей даты.
'
' ВХОДНЫЕ ПАРАМЕТРЫ:
'    StartDate: Начальная дата (например, дата рождения).
'
' РЕЗУЛЬТАТ
'    Возраст в годах.
'
'*************************************************************
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

'*************************************************************
' ИМЯ ФУНКЦИИ: AgeMonths()
'
' НАЗНАЧЕНИЕ:
'  Дополняет функцию Age(), рассчитывая число месяцев,
'  прошедших с последнего месяца в указанной дате.
'  Если указана дата рождения, функция возвращает число
'    месяцев, прошедших с последнего дня рождения.
'
' ВХОДНЫЕ ПАРАМЕТРЫ:
'    StartDate: Начальная дата (например, день рождения).
'
' РЕЗУЛЬТАТ
'    Число месяцев, прошедших с последнего дня рождения.
'*************************************************************
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. В меню View (вид) выберите пункт Immediate Window (окно просмотра значений переменных).
  4. Предположим, что ваш друг родился 15 ноября 1967 г., а сегодня 3 июня 2001 г. Введите указанную ниже строку в окно просмотра значений переменных и нажмите клавишу ВВОД.
    ?Age("11/15/67")
    						
    Microsoft Access возвращает в качестве результата 33 (года).
  5. Введите следующую команду и нажмите клавишу ВВОД:
    ?AgeMonths("11/15/67")
    						
    Microsoft Access возвращает в качестве результата цифру 6. Это означает, что с последнего дня рождения друга прошло шесть месяцев. Таким образом, возраст друга составляет 33 года и 6 месяцев.
  6. С помощью компонента Дата и время панели управления восстановите прежнюю системную дату, значение которой было записано при выполнении действия 1.

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

Описанная ниже последовательность действий позволяет установить метки для старых заказов, отображая их возраст в отдельном элементе управления.
  1. В учебной базе данных "Борей.mdb" введите в новом модуле функции Age() и AgeMonth().
  2. Откройте форму "Заказы" в режиме конструктора и добавьте в нее свободный элемент управления типа "текстовое поле".
  3. Введите следующую строку в свойство ControlSource нового текстового поля:
    =Age([OrderDate]) & " лет " & AgeMonths([OrderDate]) & " мес."
    .
  4. Просмотрите форму в представлении формы. Возраст заказа отображается в новом текстовом поле.

Ссылки

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

Свойства

Код статьи: 290190 - Последний отзыв: 21 февраля 2008 г. - Revision: 7.1
Информация в данной статье относится к следующим продуктам.
  • Microsoft Office Access 2007
  • Microsoft Office Access 2003
  • Microsoft Access 2002 Standard Edition
Ключевые слова: 
kbdatetime kbfunctions kbvba kbprogramming kbhowto KB290190

Отправить отзыв

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com