0 / 0 / 0
Регистрация: 12.12.2015
Сообщений: 73
1

Конвертирование и вычисление Возраста спортсмена

14.03.2016, 16:09. Показов 1889. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, есть такой вопрос.

В access у меня есть поле возраст(текстовое поле) там написан возраст примерно так (26-30)
мне надо вычислить с помощью sql функции кандидатов этого возраста. То есть людей 26-30 лет.

Я уже делал похожую задачку только там было одно число(26), я использовал этот sql запрос
SQL
1
2016-YEAR([Спортсмены].[Дата_рождения])
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.03.2016, 16:09
Ответы с готовыми решениями:

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

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

Вычисление возраста в MS Access - MS Access
Помогите пожалуйста! В MS Access не сильна. Как сделать запрос, который выбирает из списка...

Вычисление в км спортсмена за 10 дней
Всем здрасте! Написать программу: Спортсмен в первый день тренировок пробежал кросс 1,5 км....

8
8859 / 5904 / 585
Регистрация: 27.03.2013
Сообщений: 19,567
14.03.2016, 16:27 2
1klass, Вы что каждый день проверяете у кого вчера был день рождения, потом исправляете вручную возраст у каждого и так год из года, всю оставшуюся жизнь?
Не проще ли отталкиваться от даты рождения и вычислять, кому сколько полных лет или я чего то не допонял?
0
547 / 274 / 50
Регистрация: 03.04.2015
Сообщений: 926
14.03.2016, 16:32 3
Цитата Сообщение от PuhKMV Посмотреть сообщение
потом исправляете вручную возраст у каждого
Не, я так понял, что нужен запрос, в котором будут отображены люди, у которых возраст попадает в дипазон, указанный в поле "возраст"

Добавлено через 1 минуту
1klass, пишите в запросе
SQL
1
YEAR(Дата())-YEAR([Спортсмены].[Дата_рождения]) > 26 AND YEAR(Дата())-YEAR([Спортсмены].[Дата_рождения]) < 30
0
8859 / 5904 / 585
Регистрация: 27.03.2013
Сообщений: 19,567
14.03.2016, 16:39 4
Мне нравится вычислять возраст вот таким выражением:
SQL
1
Возраст: IIf((MONTH(Now())>MONTH([ДатаРожденияС]) OR (MONTH(Now())=MONTH([ДатаРожденияС])) AND (DAY(Now())>DAY([ДатаРожденияС]) OR DAY(Now())=DAY([ДатаРожденияС])));YEAR(Now())-YEAR([ДатаРожденияС]);YEAR(Now())-YEAR([ДатаРожденияС])-1)
А то если как у ТС, например Д/Р в конце года, а считаем сегодня, то он будет на год старше чем есть на самом деле, а у спорцменов я слышал с этим строго.

Добавлено через 2 минуты
И уж только от истинного возраста плясать.
0
547 / 274 / 50
Регистрация: 03.04.2015
Сообщений: 926
14.03.2016, 16:43 5
Это так, черновик. Надо бы чётко высчитывать, как положено. Хотя при такой вилке..
0
8859 / 5904 / 585
Регистрация: 27.03.2013
Сообщений: 19,567
14.03.2016, 16:50 6
Цитата Сообщение от corbis Посмотреть сообщение
...Хотя при такой вилке....
Если как у меня выражение (В конструкторе запроса), прописать и под этим полем в условии отбора написать
>=26 And <=30
То прям всё тютелька в тютельку всегда получалось.
Правда я всегда последнее время люблю не конкретно что то прописывать, а выбирать в поле формы нужные значения.
0
Эксперт MS Access
26805 / 14484 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
14.03.2016, 18:00 7
Лучший ответ Сообщение было отмечено 1klass как решение

Решение

Цитата Сообщение от 1klass Посмотреть сообщение
access у меня есть поле возраст(текстовое поле) там написан возраст примерно так (26-30)
мне надо вычислить с помощью sql функции кандидатов этого возраста. То есть людей 26-30 лет.
Предположу, что на самом деле есть 2 таблицы: 1) Соревнования где есть это самое текстовое поле, для определенности назовем его Диапазон и 2) таблица Спортсмены, где есть поле ДатаРождения.
Если прав, то для выбора тех или иных спортсменов на соревнования по критерию возраста подойдет такой запрос
SQL
1
2
3
4
5
SELECT Спортсмены.*, t.Диапазон
FROM  Спортсмены, 
(SELECT Соревнования.*, 
    val(Диапазон) AS v1, val(mid(Диапазон, instr(Диапазон,"-")+1)) AS v2 FROM Соревнования) AS t
WHERE Спортсмены.ДатаРождения BETWEEN dateadd("yyyy", -t.v2, DATE()) AND dateadd("yyyy", -t.v1, DATE())
1
Эксперт MS Access
17485 / 7247 / 1651
Регистрация: 21.06.2012
Сообщений: 13,859
30.11.2016, 18:09 8
Угу. О таблицах (именах, полях, связях) ничего сообщить не хотите?
0
10445 / 5445 / 1374
Регистрация: 05.10.2016
Сообщений: 15,420
30.11.2016, 18:31 9
Цитата Сообщение от 1klass Посмотреть сообщение
мне надо вычислить с помощью sql функции кандидатов этого возраста. То есть людей 26-30 лет.
Если есть поле: "Дата рождения" то вычисления не сложны ...
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
Public Function esAge(bdDate As Variant, Optional forDate As Variant = Null) As Integer
'Возвращает возраст на текущую дату (или на конкретную дату)
'   при ошибке или пустом аргументе bdDate возвращает -1 (МИНУС ОДИН)
'Аргументы:
'   bdDate    -  Дата Рождения
'   forDate   -  Дата на которую расчитать (по умолчанию = сегодня)
'--------------------------------------------------------------------------
On Error GoTo esAgeErr
'Проверяем и выравниваем аргументы
    If IsNull(forDate) Then forDate = Date
    If (bdDate = forDate) Then bdDate = forDate
'Разница в годах между датой рождения и датой на которую
    esAge = DateDiff("yyyy", bdDate, forDate)
'Вычитается один год, если в этом году дня рождения еще не было
    If DateSerial(Year(forDate), Month(bdDate), Day(bdDate)) = forDate Then
        esAge = esAge - 1
    End If
esAgeBye:
    Exit Function
esAgeErr:
    Err.Clear
    esAge = -1
    Resume esAgeBye
End Function
0
30.11.2016, 18:31
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.11.2016, 18:31
Помогаю со студенческими работами здесь

Вычисление оценки спортсмена в соревнованиях по фигурному катанию
Сразу извиняюсь, если такая тема уже есть, но нашел только на Паскаль. Программированием занимаюсь...

Вычисление возраста
есть два поля: Дата рождения и Дата смерти. Как в поле возраст вычислить возраст не прибегая к...

Вычисление возраста
select YEAR_OF_BIRTH, (sysdate-YEAR_OF_BIRTH) as AGE Получается: Как исправить запрос, чтобы...

Вычисление возраста
ИЗ бд получаю дату рождения человека! Как мне проше и бастрее всего вычислить: 1)Сколькополных...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru