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

Тема в разделе "Остальные БД", создана пользователем inret, 10 июн 2007.

Статус темы:
Закрыта.
  1. inret

    inret Гость

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

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

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

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

    Kmet Well-Known Member
    Java Team

    Регистрация:
    25 май 2006
    Сообщения:
    1.018
    Симпатии:
    1
    не шарю в акцесе, но что то мне подсказывает что вилы в "y" и "yyyy"
     
  3. BOPOHA

    BOPOHA Well-Known Member

    Регистрация:
    26 апр 2006
    Сообщения:
    118
    Симпатии:
    0
    Код (Text):
    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
     
  4. inret

    inret Гость

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

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

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

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

    ~/~ Гость

    <!--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)
     
  6. BOPOHA

    BOPOHA Well-Known Member

    Регистрация:
    26 апр 2006
    Сообщения:
    118
    Симпатии:
    0
    Что забирать, откуда, забирать ли??? Выражайся яснее.

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

    Код (Text):
    SELECT ... Vozrast([ПОЛЕ]) As VOZRAST FROM ....
    Бонус в том, что это позволяет повторно использовать код, а не писать его каждый раз заново. Только в этом случае в функцию стоит принимать тип Variant и обрабатываеть его на Null...
     
  7. Ewgen81

    Ewgen81 Гость

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

    BOPOHA Well-Known Member

    Регистрация:
    26 апр 2006
    Сообщения:
    118
    Симпатии:
    0
    Ставить в эл.управления "Возраст" в атрибут "Данные".

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

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



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

    lyubomyr Гость

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

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

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

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

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

    BOPOHA Well-Known Member

    Регистрация:
    26 апр 2006
    Сообщения:
    118
    Симпатии:
    0
    Удалить из таблицы поле возраст. Вычисляемых полей в Access нет вычисляемых полей.

    Ээээ... Перечитайте как ответы. Я уже отвечал.

    Откуда я знаю куда вам надо?
     
  11. lyubomyr

    lyubomyr Гость

    Спасибо, разобрался, заработало!!! :)
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей