Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.68/333: Рейтинг темы: голосов - 333, средняя оценка - 4.68
0 / 0 / 0
Регистрация: 20.05.2010
Сообщений: 8
1

Вычисление возраста сотрудника и расчёт среднего возраста

20.05.2010, 07:53. Просмотров 61338. Ответов 37
Метки нет (Все метки)

Народ ПОМОГИТЕ пожалуйста!!!
В Access не силён (на уровне пользователя).
Имеется база данных с полем "Дата рождения" .
Задача: 1.Подсчитать возраст каждого сотрудника
2.Вычислить средний возраст персонала

Пожалуйста кому не трудно, помогите как это сделать по проще?

Заранее БЛАГОДАРЕН!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.05.2010, 07:53
Ответы с готовыми решениями:

Расчет возраста человека
Как рассчитать возраст человека? Не тупо отнимая дату от даты? DateDiff не работает (Informix-sql)

Сделать запрос на расчет возраста коньяка
у организации есть продукт (коньяк) и обязательно посчитать сколько ему лет но главная...

Вычисление возраста в MS Access
Задание "б)Создать составную форма Участковые врачи - Больные. Особенности: - после ввода Даты...

Конвертирование и вычисление Возраста спортсмена
Здравствуйте, есть такой вопрос. В access у меня есть поле возраст(текстовое поле) там написан...

37
683 / 239 / 13
Регистрация: 02.04.2009
Сообщений: 692
20.05.2010, 08:02 2
Добавляешь в запрос следующее поле и будет тебе возраст.

Возраст: (Year(Now())-Year([Дата рождения]))

Чтоб найти средний возраст сложи (sum) полученные возраста и потом раздели на количество людей (count).
2
0 / 0 / 0
Регистрация: 20.05.2010
Сообщений: 8
20.05.2010, 09:29  [ТС] 3
Цитата Сообщение от reiteriX Посмотреть сообщение
Добавляешь в запрос следующее поле и будет тебе возраст.

Возраст: (Year(Now())-Year([Дата рождения]))

Чтоб найти средний возраст сложи (sum) полученные возраста и потом раздели на количество людей (count).
ОГРОМНЕЙШЕЕ СПАСИБО!!!
Возраст работает!!!
Сейчас буду средний выводить!

Добавлено через 4 минуты
Цитата Сообщение от reiteriX Посмотреть сообщение
.

Чтоб найти средний возраст сложи (sum) полученные возраста и потом раздели на количество людей (count).
Я что то не врубаюсь как формула будет выглядеть :-(((

Добавлено через 21 минуту
Вот я пишу формулу среднего возраста:
Средний возраст: (Sum([Возраст]))/(Count)
Что не так???

Добавлено через 56 минут
Цитата Сообщение от reiteriX Посмотреть сообщение
Добавляешь в запрос следующее поле и будет тебе возраст.

Возраст: (Year(Now())-Year([Дата рождения]))
Эта формула находит возраст не совсем правильно. Вот например если сорудник родился в сентябре, то ему сейчас по идее 24 года, а формула выдает 25.
Вот так.
0
452 / 214 / 5
Регистрация: 16.05.2010
Сообщений: 420
20.05.2010, 11:32 4
Вычисление возраста с точностью до дней.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
Option Compare Database
Option Explicit
Public VarLastDateControl As Variant
Public VarD
Public VarM
Public VarY
Public VarNameForm As String
Public d, m, Y
Function LeapYear(YYYY As Integer) As Integer
'
' ВИСОКОСНЫЙ ГОД
' YYYY: 4-digit year
'
  LeapYear = YYYY Mod 4 = 0 And (YYYY Mod 100 <> 0 Or YYYY Mod 400 = 0)
End Function
 
    
    
    'Використано алгоритм Сергея Терени з сайту MS Access - Кирпичики [url]http://msa.polarcom.ru/downloads.htm[/url]
'АЛГОРИТМ РЕШЕНИЯ ЧАСТИЧНО БЫЛ ВЗЯТ С САЙТА БИБЛИОТЕКИ АЛГОРИТМОВ
Dim dm(12) As Integer, cf As Integer
'описываем массив количества дней в месяцах
dm(1) = 31
dm(2) = 28
dm(3) = 31
dm(4) = 30
dm(5) = 31
dm(6) = 30
dm(7) = 31
dm(8) = 31
dm(9) = 30
dm(10) = 31
dm(11) = 30
dm(12) = 31
If LeapYear(DatePart("yyyy", VarEventualDate)) Then
    dm(2) = 29  'если год високосный, то число дней в месяце февраль -29
        Else
    dm(2) = 28  'если год невисокосный, то число дней в месяце февраль -28
End If
' кількість днів
cf = 0
d = DatePart("d", VarEventualDate) - DatePart("d", VarInitialDate)
If d < 0 Then
    d = d + dm(DatePart("m", VarInitialDate))
    cf = 1
Else
    d = DatePart("d", VarEventualDate) - DatePart("d", VarInitialDate)
End If
If d >= dm(DatePart("m", VarEventualDate)) Then
    d = d - dm(DatePart("m", VarEventualDate))
    cf = 0
End If
'кількість місяців
m = DatePart("m", VarEventualDate) - DatePart("m", VarInitialDate) - cf
cf = 0
If m < 0 Then
    m = m + 12
    cf = 1
End If
'кількість років
If m = 12 Then
    cf = -1
    m = 0
End If
    
Y = DatePart("yyyy", VarEventualDate) - DatePart("yyyy", VarInitialDate) - cf
 
VarD = d
VarM = m
VarY = Y
End Sub
Функцию лучше разместить в отдельном модуле.
А это вариант попроще (точность - количество лет)
Visual Basic
1
2
3
4
5
If Month(Me![ДатаПоступления]) > Month(Me![ДатаРождения]) Or (Month(Me![ДатаПоступления]) = Month(Me![ДатаРождения]) And Day(Me![ДатаРождения]) <= Day(Me![ДатаПоступления])) Then
    Me![Возраст] = Year(Me![ДатаПоступления]) - Year(Me![ДатаРождения])
Else
    Me![Возраст] = Year(Me![ДатаПоступления]) - Year(Me![ДатаРождения]) - 1
End If
1
0 / 0 / 0
Регистрация: 20.05.2010
Сообщений: 8
24.05.2010, 02:22  [ТС] 5
А ещё варианты по проще есть?
И кто нибудь подскажите формулу среднего возраста?
Спаасибо
0
Эксперт JavaЭксперт С++
8357 / 3578 / 419
Регистрация: 03.07.2009
Сообщений: 10,708
24.05.2010, 02:40 6
Цитата Сообщение от mikhailir Посмотреть сообщение
И кто нибудь подскажите формулу среднего возраста?
SQL
1
2
SELECT AVG(ВОЗРАСТ)
FROM YOURTABLE
1
0 / 0 / 0
Регистрация: 20.05.2010
Сообщений: 8
24.05.2010, 03:31  [ТС] 7
до меня всё равно не доходит
-- куда все эти формулы вставлять и
--как сделать чтобы они работали?!:-(((
0
452 / 214 / 5
Регистрация: 16.05.2010
Сообщений: 420
24.05.2010, 10:22 8
Цитата Сообщение от HOUSE MD Посмотреть сообщение
SQL
1
2
3
4
5
IF MONTH(Me![ДатаПоступления]) > MONTH(Me![ДатаРождения]) OR (MONTH(Me![ДатаПоступления]) = MONTH(Me![ДатаРождения]) AND DAY(Me![ДатаРождения]) <= DAY(Me![ДатаПоступления])) THEN
    Me![Возраст] = YEAR(Me![ДатаПоступления]) - YEAR(Me![ДатаРождения])
ELSE
    Me![Возраст] = YEAR(Me![ДатаПоступления]) - YEAR(Me![ДатаРождения]) - 1
END IF
Так это и есть вариант попроще. Ставиш в событие "выход" полей ![ДатаПоступления] и [ДатаРождения]. Можно оформить как отдельную подпрограмму и обращаться к нец по Call
0
Эксперт JavaЭксперт С++
8357 / 3578 / 419
Регистрация: 03.07.2009
Сообщений: 10,708
24.05.2010, 11:25 9
Цитата Сообщение от mikhailir Посмотреть сообщение
до меня всё равно не доходит куда все эти формулы вставлять и как сделать чтобы они работали?!:-(((
Вы не знаете где находится SQL-редактор в MS Access?
0
0 / 0 / 0
Регистрация: 20.05.2010
Сообщений: 8
25.05.2010, 02:12  [ТС] 10
Цитата Сообщение от HOUSE MD Посмотреть сообщение
Так это и есть вариант попроще. Ставиш в событие "выход" полей ![ДатаПоступления] и [ДатаРождения]. Можно оформить как отдельную подпрограмму и обращаться к нец по Call
Как это сделать? Я вообще не понимаю:-(

Добавлено через 19 минут
Цитата Сообщение от M128K145 Посмотреть сообщение
Вы не знаете где находится SQL-редактор в MS Access?
НЕТ:-(
Я вообще в программирование не врубаюсь и никогда с ним не сталкивался:-(
0
683 / 239 / 13
Регистрация: 02.04.2009
Сообщений: 692
25.05.2010, 08:25 11
mikhailir, создаешь запрос через конструктор и в левом верхнем углу (2007) нажимай "Режим", потом "Режим SQL"
2
0 / 0 / 0
Регистрация: 20.05.2010
Сообщений: 8
26.05.2010, 09:45  [ТС] 12
Цитата Сообщение от reiteriX Посмотреть сообщение
mikhailir, создаешь запрос через конструктор и в левом верхнем углу (2007) нажимай "Режим", потом "Режим SQL"
Спасибо!
0
Ejik1974
13.04.2012, 18:13 13
Возраст: IIf((Month(Now())>Month([Общий]![Дата рождения]) Or (Month(Now())=Month([Общий]![Дата рождения])) And (Day(Now())>Day([Общий]![Дата рождения]) Or Day(Now())=Day([Общий]![Дата рождения])));Year(Now())-Year([Дата рождения]);Year(Now())-Year([Дата рождения])-1)
3538 / 1112 / 94
Регистрация: 13.03.2011
Сообщений: 1,513
13.04.2012, 19:00 14
Цитата Сообщение от Ejik1974 Посмотреть сообщение
Возраст: ...
Будьте проще
Visual Basic
1
Datediff("yyyy",[Дата рождения],Date())+(Format([Дата рождения],"mmdd")>Format(Date(),"mmdd"))
3
Эксперт MS Access
6390 / 3998 / 236
Регистрация: 12.08.2011
Сообщений: 11,159
14.04.2012, 00:13 15
Ejik1974, и здесь ты? тэгоненавистник!
0
6 / 6 / 1
Регистрация: 28.09.2018
Сообщений: 395
20.12.2018, 19:31 16
HOUSE MD, не понимаю, что за [ДатаПоступления]

Цитата Сообщение от mikhailir
Имеется база данных с полем "Дата рождения" .
Задача: 1.Подсчитать возраст каждого сотрудника
Ну да это к слову - попробую заменить на Now.

HOUSE MD, пока так...

Вычисление возраста сотрудника и расчёт среднего возраста


Нажмите на изображение для увеличения
Название: Безымянный.png
Просмотров: 30
Размер:	218.9 Кб
ID:	995235


Sorry, вот это:

Вычисление возраста сотрудника и расчёт среднего возраста
0
395 / 211 / 75
Регистрация: 09.04.2018
Сообщений: 947
20.12.2018, 19:56 17
number_118, вся конструкция, та что начинается с IF, - это не SQL это ВБА. В запросе работать не будет.
1
6 / 6 / 1
Регистрация: 28.09.2018
Сообщений: 395
20.12.2018, 21:54 18
Kiriver, если можно, как подключить этот VBA код? Раз возникла необходимость, приступил к изучению макросов сейчас.

Спасибо.
0
Эксперт MS Access
6390 / 3998 / 236
Регистрация: 12.08.2011
Сообщений: 11,159
20.12.2018, 22:05 19
Цитата Сообщение от number_118 Посмотреть сообщение
приступил к изучению макросов сейчас.
лучше забудьте о них, тупиковая ветвь эволюции, изучайте лучше VBA
0
6 / 6 / 1
Регистрация: 28.09.2018
Сообщений: 395
20.12.2018, 22:36 20
alvk, я думал, что ч/з макрос можно подключить VBA...

Просто взял код VBA, сохранил его, а как использовать, при коде не говорилось (и на сайте тоже, кажется).

Вообще, поиск не многое даёт по запросу VBA access. - одна ссылка, но там высылают, т.е. нельзя скачать, др - на англе.

Гляну ещё раз путеводитель, но "предчувствую", что там устаревшие и ссылки, и/или access.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.12.2018, 22:36

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

Вычисление среднего возраста
Есть вычисление возраста с выводом в переменную vozrast public int GetBirthDay()//Метод...

Проверка возраста сотрудника при добавлении в БД
Здравствуйте, у меня такая проблема! Я к программе подключил БД SQl. Мне нужно что бы при...

Отобразить стек в порядке возрастания возраста сотрудника
Тема &quot;Стек&quot;. Дано задание: Написать программу, реализующую стек с информацией о сотрудниках и...

функция определения среднего возраста
функция определения среднего возраста пользователей (поле age) возвращает число Структура...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.