Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.11.2012, 13:48   #1
GugaE
 
Регистрация: 28.11.2012
Сообщений: 8
По умолчанию база данных Access

Здравствуйте!Помогите пожалуйста, с курсовой возникли проблемы!Как расчитать в базе данных Access возвраст (полных лет, если можно с месецами ) ребенка на период 01.09.2012 и 01.01.2013. В интернете нашла формулы, но они выполняют расчет с учетом сегоднешней даты.Плиззззззз!
GugaE вне форума Ответить с цитированием
Старый 28.11.2012, 13:57   #2
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Код:
    ' DateDiff (функция) - возвращает число временных интервалов, между двумя датами
    ПериодМесяцев = DateDiff("M", CDate("01.09.2012"), CDate("01.01.2013"))
    MsgBox "Всего " & ПериодМесяцев \ 12 & " г. и " & ПериодМесяцев Mod 12 & " мес"
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 28.11.2012, 14:02   #3
GugaE
 
Регистрация: 28.11.2012
Сообщений: 8
По умолчанию

Мне нужно в безе данных в запросе сделать,а я так поняла что это в Delphi?
GugaE вне форума Ответить с цитированием
Старый 28.11.2012, 14:09   #4
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Цитата:
Сообщение от GugaE Посмотреть сообщение
Мне нужно в безе данных в запросе сделать
Так и делайте, я дал пример использования функции.
Откройте построитель,эта функция есть.
Изображения
Тип файла: jpg дата.jpg (55.2 Кб, 30 просмотров)
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 28.11.2012, 14:18   #5
GugaE
 
Регистрация: 28.11.2012
Сообщений: 8
По умолчанию

А можно как нибудь в таком роде! IIf((Month(Now())>Month([Общий]![Дата рождения]) Or (Month(Now())=Month([Общий]![Дата рождения])) And (Day(Now())>Day([Общий]![Дата рождения]) Or Day(Now())=Day([Общий]![Дата рождения])));Year(Now())-Year([Дата рождения]);Year(Now())-Year([Дата рождения])-1) , толька эта формула считает с учетом сегоднешней даты
GugaE вне форума Ответить с цитированием
Старый 28.11.2012, 14:32   #6
GugaE
 
Регистрация: 28.11.2012
Сообщений: 8
По умолчанию

я попробывала как вы написали и мне выдало ошибку на MsgBox
GugaE вне форума Ответить с цитированием
Старый 28.11.2012, 14:41   #7
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

по этой ссылке
Опция искать в этом разделе введете слово для поиска DateDiff
Куча ответов с примерами есть
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 28.11.2012, 15:11   #8
GugaE
 
Регистрация: 28.11.2012
Сообщений: 8
По умолчанию

почему если я пишу формулу как вы написали мне выдает ошибку на MsgBox?
GugaE вне форума Ответить с цитированием
Старый 28.11.2012, 15:28   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

doober, я тут уже на форуме многократно писал, что мне фукция DateDiff крайне не нравится, особенно, когда речь идёт о полном числе лет.

Предложенная Вами формула, например, возвращает не полное число месяцев, а разницу между месяцами.
например,
Код:
    ПериодМесяцев = DateDiff("M", CDate("31.12.2012"), CDate("01.01.2013"))
    MsgBox "Всего " & ПериодМесяцев \ 12 & " г. и " & ПериодМесяцев Mod 12 & " мес"
вернёт 1 месяц. Очевидно, что к числу ПОЛНЫХ месяцев этот ответ отношения не имеет...

GugaE, Вы даты начальную-конечную откуда брать собираетесь?
если из таблицы, то
Код:
SELECT  *,
  IIf((Month(Now())>Month([ТаблицаXXXX2]![Дата рождения]) Or (Month(Now())=Month([ТаблицаXXXX2]![Дата рождения])) 
   And 
  (Day(Now())>Day([ТаблицаXXXX2]![Дата рождения]) 
     Or Day(Now())=Day([ТаблицаXXXX2]![Дата рождения]))),
    Year(Now())-Year([Дата рождения]),Year(Now())-Year([Дата рождения])-1)
FROM ТаблицаXXXX2;
вместо ТаблицаXXXX2 укажите Вашу таблицу
вместо [Дата рождения] укажите название поля в вашей таблице с датой рождения
вместо Now() укажите название поля в вашей таблице, где находится вторая дата.

получите в результате выполнения запроса число полных лет (без месяцев!)
Serge_Bliznykov вне форума Ответить с цитированием
Старый 28.11.2012, 15:37   #10
GugaE
 
Регистрация: 28.11.2012
Сообщений: 8
По умолчанию

Serge_Bliznykov, спасибо вам огромное,работает!
GugaE вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
База данных в Access. boss89 Помощь студентам 3 18.04.2011 14:12
База данных в MS Access Marques22 Фриланс 6 12.01.2011 13:58
База данных (Access) student13 Фриланс 2 26.12.2010 21:41
База данных в Access Egor73 Фриланс 4 21.12.2010 23:52
база ДАННЫХ ACCESS den2010 Помощь студентам 0 08.12.2009 20:12