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

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

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Access
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.07.2009, 15:26   #1
Jadovi
Новичок
Джуниор
 
Регистрация: 04.02.2009
Сообщений: 2
По умолчанию Работа с датами

Возникла вот какая проблема. Есть таблица с Ф.И.О и с датой рождения. Как сделать запрос, чтобы на сегодняшнюю дату выводилось количество полных лет - это основное. Была еще проблема с выводом Ф.И.О. кому исполнилось 18 лет. Было решено Now()-365*18. Можно ли как-то по-другому? или год всегда нужно переводить в дни??? Помогите, пожалуйста.
Jadovi вне форума Ответить с цитированием
Старый 12.07.2009, 21:29   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

так нехорошо..

посмотрите по поиску здесь - там вариантов миллион...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 18.07.2009, 16:53   #3
newmister
Пользователь
 
Регистрация: 30.01.2009
Сообщений: 18
По умолчанию

Вроде Делфи Даты нормально вычисляет. Если не ошибусь, так можно:
Код:
If Now()-StrToDate(dd.mm.yyyy)>6574 then...
где dd.mm.yyyy - дата рождения
6574 дней в 18 годах
newmister вне форума Ответить с цитированием
Старый 19.07.2009, 08:04   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

newmister, кошмар...
1) а чем Ваш способ отличается от того, что описал автор вопроса в #1 ?
2) а какое отношение вопрос имеет к Дельфи?!

nb. я уже молчу о том, что в функции StrToDate пропущены апострофы. Да и не всегда эта функция на вход принимает строку в формате dd.mm.yyyy - это зависит от региональных настроек Windows!!!!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 11.11.2009, 10:29   #5
Nick77
Пользователь
 
Регистрация: 10.11.2009
Сообщений: 13
По умолчанию

Примерно таже проблема.. но немножко не такая... вся загвоздка с подсчетом возраста в том что если вывожу в поле "Возраст" данные "День рождения" с таблицы на основе которой делаю форму проблем нет все работает (пришлось в нарушение задания привинтить к этой таблице поле"День рождения"), если пробую сделать так как в задании поле "Возраст" должно брать значание с другой таблицы этого же проекта - кроме ошибки ничего не могу добиться. Синтаксис в свойствах поля Данные =Format(Date()-(Кадры.[Дата роджения]))/360. В таком случае выдает ошибку, если убрать Кадры из формулы и брать данные из таблицы по умолчанию то работает. Где я ошибся?? Подскажите пожалуста.
Nick77 вне форума Ответить с цитированием
Старый 11.11.2009, 19:55   #6
Abrakadabra
Форумчанин
 
Регистрация: 26.04.2008
Сообщений: 487
По умолчанию

Если уж делаете, то сделайте фунцию, аргументом которой будет дата рождения. В этой функции вычислите кол-во полных лет на сегодняшнюю дату, после чего используйте ее (фунцию) в запросе. всего и делов..
Abrakadabra вне форума Ответить с цитированием
Старый 12.11.2009, 00:35   #7
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

Здравствуйте Nick77.
в запросах MS Access допускается испльзование функций VBA, кол-во полных лет можно получить подобным полем запроса:
Year(Date()-[Дата])-1900
все таблицы поля которых учавствуют в вычислении даты должны быть подключены к источнику строк - запросу формы.
Если это не возможно - воспользуйтесь советом Abrakadabra
Евгений.
пользоваться "чужими ветками" форума не стоит.
Teslenko_EA вне форума Ответить с цитированием
Старый 12.11.2009, 08:52   #8
Nick77
Пользователь
 
Регистрация: 10.11.2009
Сообщений: 13
По умолчанию

За то что пользовался чужой темой прошу извенить.. обычно админы форумов нервно относятся к созданию новых тем...поэтому мне эта тема показалась наиболее подходящей к моей проблеме... Теперь по сути: я наверно не совсем внятно объяснил суть.. Дело в том что в задании уже прописано четко какую формулу мне писать в вычисляемое поле(Возраст = ()Состояние.Дата-Кадры.[Дата рождения]/360).. если я делаю форму на основе полей таблицы Состояние - то формула не работает - пишет ошибка , если я добавляю поле Дата рождения в таблицу Состояние то все пучком. Поэтому ваши рекомендации мягко говоря не совсем мне помогут в этой случае.. Пробовал делать форму на основе запроса где к полям таблицы Состояние было привинчено поле Дата рождения.. снова ошибка, делал форму добавляя поле Дата рождения с таблицы Кадры снова облом... Я понимая что полный делитант в акцессе но если дали такое задание значит есть путь решения ... подскажите как нормально связать эти поля с разных таблиц и сделать так чтобы вычисляемое поле работало. Спасибо за внимание.. и простите что продолжил в чужой теме.
Nick77 вне форума Ответить с цитированием
Старый 12.11.2009, 10:19   #9
Abrakadabra
Форумчанин
 
Регистрация: 26.04.2008
Сообщений: 487
По умолчанию

Цитата:
Сообщение от Nick77 Посмотреть сообщение
в задании уже прописано четко какую формулу мне писать в вычисляемое поле(Возраст = ()Состояние.Дата-Кадры.[Дата рождения]/360)..
Интересно, а что Вы собрались вычислять такой формулой?


Цитата:
Сообщение от Nick77 Посмотреть сообщение
вычисляемое поле..
нет такого понятия в аксессе
Abrakadabra вне форума Ответить с цитированием
Старый 12.11.2009, 11:49   #10
Nick77
Пользователь
 
Регистрация: 10.11.2009
Сообщений: 13
По умолчанию

Возраст = (Состояние.Дата-Кадры.[Дата рождения]/360)..еще раз повторяюсь не я выдумал.. мне лично пофиг что так и кто придумал .. что то считает приближенно и с меня хватит.. Вопрос в другом если текущая дата и дата рождения прописаны в одной таблице то в форме нет проблем вычислить по их указаной выше формуле что то прибиженно вычисляющее возраст.. проблема еще раз повторяюсь в другом если дату рождения беру с другой таблицы то облом не считает. Если не тяжело покажите на примере как правильно делать.. а писать тут для полного дилетанта умные выражения без точной формулировки куда все это привентить просто потеря мого и вашего многоуважаемые помошники времени. Извенити еще раз.. но не могу понять что то элементарное.. все примеры и вся теория что я проштудировал само собой подразумевает работу с одной таблицей.. может я просто не нашел нужного описания.. поэтому и обратился к вам.. Примерно как здесь http://www.cyberforum.ru/ms-access/t...read56847.html читая сообщения я не очень понял о чем идет речь... но когда глянул пример все стало на свои места.. так вот и я прошу укажите где четко описано как связывать данные из двух таблиц и вычислять возраст или покажите на примере.... Кстати благодаря примеру я решил вопрос записи текущих данных в таблицу.. Расчетное значение возраста после закрытия формы попадает в таблицу ,осталась только одна загвоздка удалить поле Дата рождения из таблицы Состояние и взять данные из таблицы Кадры.. вот и вся проблема...покажите пожалуста на примере как это реализовать..или дайте ссылку где ото описано.
Кстати немного повозился и решил проблему сохранения текущей даты в таблицу при выходе из формы... Значит так в режиме конструктора формы выбираем поле Дата, затем в свойствах в закладке События - Вход - назначаем Процедуру обработки событий и прописываем такой макрос
Private Sub Дата_Enter()
Me.[Дата] = Date
End Sub
Может кому пригодится..

Последний раз редактировалось Nick77; 12.11.2009 в 13:25. Причина: добавление ответа
Nick77 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
работа с датами Screame Microsoft Office Excel 1 11.07.2009 01:18
Работа с датами Tanuska___:) БД в Delphi 6 18.09.2008 13:56
Работа с датами Ozerich Общие вопросы Delphi 6 07.08.2008 10:03
Работа с датами SanekIrk Общие вопросы Delphi 5 11.07.2008 22:01
работа с датами kolduev Помощь студентам 6 27.02.2008 19:54