Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Access - Вычисление возраста
Форум программистов > Базы данных и администрирование > Остальные БД
inret
Здравствуйте!

Замучился. Мне надо вычислить возраст, т.е. отнять от сегодняшней даты дату рождения и чтоб выводилось только года (столько-то лет ...)

Что не правильно здесь:

Код:
=IIf(DatePart("y",[ДатаРождения])-date();
DateDiff("yyyy";[ДатаРождения];date());
DateDiff("yyyy";[ДатаРождения];date())-1)
Kmet
не шарю в акцесе, но что то мне подсказывает что вилы в "y" и "yyyy"
BOPOHA
Public Function Vozrast(dRozhd As Date) As Long
'-- вычисление возраста на текущий момент
'-- dRozhd - дата рождения
On Error GoTo Err_VC_RaznicaDates

If (dRozhd > date) Then
    dRozhd = date
End If

'Подсчет разницы в годах между текущей датой и датой рождения
Vozrast = DateDiff("yyyy", dRozhd, date)

'Вычитается один год, если в этом году дня рождения еще не было
If DateSerial(Year(date), Month(dRozhd), Day(dRozhd)) > date Then
    Vozrast = Vozrast - 1
End If

Exit_:
    Exit Function
Err_:
'    MsgBox Err.Description
    Resume Exit_
End Function
inret
Спасибо за код.

Но мне нужен код не на VB

Вот мой вариант:
=iif(dateserial(year(date());month(ДатаРождения);day(ДатаРождения))<=date();
year(date())-year(ДатаРождения);
year(date())-year(ДатаРождения)-1)

Код работает, но как сделать, чтобы при запуске запроса не вфыфводилось диалоговое окно с указание параметра.
~/~евто/-/
Цитата(inret @ 11:06:2007, 14:42 )
Код работает, но как сделать, чтобы при запуске запроса не вфыфводилось диалоговое окно с указание параметра.
*


Забирать его из таблицы smile.gif или из другого запроса smile.gif

Например:
=iif(dateserial(year(date());month(Пользователь.ДатаРождения);day(Пользователь.Д
атаРождения))<=date();
year(date())-year(Пользователь.ДатаРождения);
year(date())-year(Пользователь.ДатаРождения)-1)
BOPOHA
Что забирать, откуда, забирать ли??? Выражайся яснее.

ЗЫ: Почему бы не реализовать функцию и вызывать ее из запроса.

SELECT ... Vozrast([ПОЛЕ]) As VOZRAST FROM ....


Бонус в том, что это позволяет повторно использовать код, а не писать его каждый раз заново. Только в этом случае в функцию стоит принимать тип Variant и обрабатываеть его на Null...
Ewgen81
я так же хочу чтоб поле возраст вычислялось автоматически, например после ввода даты рождения, не могу понять куда именно поставить формулу, ставил в поле возраст, в свойствах в поле "по умолчанию", не считает, ставит "в условие", тоже не считает, подскажите плиз, какую формулу и куда вставить. sad.gif
Нажмите для просмотра прикрепленного файла
BOPOHA
Ставить в эл.управления "Возраст" в атрибут "Данные".

Формат записи выражения: "=выражени", где выражением может быть и функция.

Если эл.управления "Возраст" в атрибуте "Данные" содержит поле из таблицы (как источник данных), то необходимо расчитывать это поле в коде. При изменениях эл.управления "Дата рождения".



Новый вопрос лучше задавать в новой теме.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2008 IPS, Inc.