• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Access - Вычисление возраста

  • Автор темы inret
  • Дата начала
Статус
Закрыто для дальнейших ответов.
I

inret

Здравствуйте!

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

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

Код:
=IIf(DatePart("y",[ДатаРождения])-date();
DateDiff("yyyy";[ДатаРождения];date());
DateDiff("yyyy";[ДатаРождения];date())-1)
 

Kmet

Well-known member
25.05.2006
904
8
BIT
0
не шарю в акцесе, но что то мне подсказывает что вилы в "y" и "yyyy"
 
B

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
 
I

inret

Спасибо за код.

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

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

Код работает, но как сделать, чтобы при запуске запроса не вфыфводилось диалоговое окно с указание параметра.
 
?

~/~

<!--QuoteBegin-inret+11:06:2007, 14:42 -->
<span class="vbquote">(inret @ 11:06:2007, 14:42 )</span><!--QuoteEBegin-->Код работает, но как сделать, чтобы при запуске запроса не вфыфводилось диалоговое окно с указание параметра.
[snapback]68922" rel="nofollow" target="_blank[/snapback]​
[/quote]

Забирать его из таблицы :) или из другого запроса :)

Например:
=iif(dateserial(year(date());month(Пользователь.ДатаРождения);day(Пользователь.Д
атаРождения))<=date();
year(date())-year(Пользователь.ДатаРождения);
year(date())-year(Пользователь.ДатаРождения)-1)
 
B

BOPOHA

Что забирать, откуда, забирать ли??? Выражайся яснее.

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

Код:
SELECT ... Vozrast([ПОЛЕ]) As VOZRAST FROM ....

Бонус в том, что это позволяет повторно использовать код, а не писать его каждый раз заново. Только в этом случае в функцию стоит принимать тип Variant и обрабатываеть его на Null...
 
E

Ewgen81

я так же хочу чтоб поле возраст вычислялось автоматически, например после ввода даты рождения, не могу понять куда именно поставить формулу, ставил в поле возраст, в свойствах в поле "по умолчанию", не считает, ставит "в условие", тоже не считает, подскажите плиз, какую формулу и куда вставить. :p
Посмотреть вложение ____.bmp
 
B

BOPOHA

Ставить в эл.управления "Возраст" в атрибут "Данные".

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

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



Новый вопрос лучше задавать в новой теме.
 
L

lyubomyr

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

Ну я много не понимаю.

Можете мне написать точную рабочую формулу и детально куда ее нужно вводить.

У миня єсть таблица из двух колонок в первой Дата Рождения (тип даных - Дата/время) во второй Возраст (тип даных - числовой).

Что мне сделать чтобы во второй колонке автоматически после введения дати появлялся Возраст. Очинь благодарен за помочь!!!
 
B

BOPOHA

Что мне сделать чтобы во второй колонке автоматически после введения дати появлялся Возраст.
Удалить из таблицы поле возраст. Вычисляемых полей в Access нет вычисляемых полей.

Можете мне написать точную рабочую формулу...
Ээээ... Перечитайте как ответы. Я уже отвечал.

детально куда ее нужно вводить
Откуда я знаю куда вам надо?
 
L

lyubomyr

Спасибо, разобрался, заработало!!! :)
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!