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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.06.2016, 11:29   #1
Avetis62
Пользователь
 
Регистрация: 15.03.2016
Сообщений: 80
По умолчанию Приближение событии

Здравствуйте уважаемые. Прошу Вас помочь мне в следующем.
Не могу сделать так, чтобы при загрузке форма "ДниРождения" показало
только сообщения, которые происходили или должны происходить в период ± 3 дней, то есть начиная с 19.06.2016 по 26.06.2016. А остальные сообщения до и после этого периода не должны появляться.
Файл прилагаю.
Вложения
Тип файла: rar 1.rar (24.2 Кб, 13 просмотров)
Avetis62 вне форума Ответить с цитированием
Старый 22.06.2016, 12:49   #2
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Цитата:
Не могу сделать
. А что делали, как пытались решить? Сделали архив и запостили сообщение?


В запрос НапоминаниеПроДатуРождения добавить поле
Код:
Выражение3: Abs(DateDiff("d";Format(Дата();"dd\.mm");Format([Дата_рождения];"dd\.mm")))
с УсловиемОтбора:
Код:
>=0 and <=3
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 22.06.2016, 13:06   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

или можно обернуть запрос в подзапрос:

Код:
SELECT * FROM (
SELECT Сотрудники.Код, Сотрудники.Фамилия, Сотрудники.Имя, Сотрудники.Отчество, IIf([ДнейДоДР]<0,"Не забыли поздравить с прошедшим Днём Рождения",
IIf([ДнейДоДР]=0,"Сегодня День Рождения",IIf([ДнейДоДР]=1,"Завтра День Рождения",
IIf([ДнейДоДР]<=4,"На днях будет День Рождения","")))) AS Сообщение, 
Сотрудники.Дата_рождения, 
DateDiff("d",[ТекДата],[ДР]) AS ДнейДоДР, 
Format(Date(),"dd\.mm") AS ТекДата, 
Format([Дата_рождения],"dd\.mm") AS ДР, 
Day([Дата_рождения]) AS Выражение1, 
Month([Дата_рождения]) AS Выражение2
FROM Сотрудники
WHERE  (((Month([Дата_рождения]))=Month(Date())) AND ((Сотрудники.Дата_уволнения) Is Null)))
WHERE (ABS([ДнейДоДР])<4);
Serge_Bliznykov вне форума Ответить с цитированием
Старый 22.06.2016, 13:16   #4
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

а...ну да...abs можно убрать >=0 c условия. Перестраховка
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 22.06.2016, 14:10   #5
Avetis62
Пользователь
 
Регистрация: 15.03.2016
Сообщений: 80
По умолчанию

Ты, как всегда прав, спасибо.
Avetis62 вне форума Ответить с цитированием
Старый 22.06.2016, 14:46   #6
Avetis62
Пользователь
 
Регистрация: 15.03.2016
Сообщений: 80
По умолчанию

Уважаемый Александр, я в запросе добавил
Выражение3: Abs(DateDiff("d";Format(Date();"dd\ .mm");Format([Дата_рождения];"dd\.mm")))
и условие отбора >=0 and <=3
Все нормально работает, надеюсь в дальнейшем не будет проблем.
Avetis62 вне форума Ответить с цитированием
Старый 30.09.2016, 11:40   #7
Avetis62
Пользователь
 
Регистрация: 15.03.2016
Сообщений: 80
По умолчанию

Уважаемые друзья возникла необходимость чтобы:
- напоминало только вчерашние Дни Рождения,
- наступающие Дни Рождения напоминало бы за три дня.
Файл прилагаю. Заранее благодарю.
Вложения
Тип файла: rar Vopros.rar (15.6 Кб, 11 просмотров)
Avetis62 вне форума Ответить с цитированием
Старый 30.09.2016, 11:58   #8
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Код:
SELECT 
Сотрудники.Код, Сотрудники.Фамилия, Сотрудники.Имя, Сотрудники.Отчество, 
IIf([ДнейДоДР]=3,"На днях будет День Рождения","Вчера был День Рождения") AS Сообщение, 
Сотрудники.Дата_рождения, DateDiff("d",[ТекДата],[ДР]) AS ДнейДоДР,
 Format(Date(),"dd\.mm") AS ТекДата, Format([Дата_рождения],"dd\.mm") AS ДР,
Day([Дата_рождения]) AS Выражение1, Month([Дата_рождения]) AS Выражение2,
Abs(DateDiff("d",Format(Date(),"dd /mm"),Format([Дата_рождения],"dd\.mm"))) AS Выражение3, 
(DateDiff("d",Format(Date(),"dd /mm"),Format([Дата_рождения],"dd\.mm"))) AS Выражение4
FROM Сотрудники
WHERE
 ((((DateDiff("d",Format(Date(),"dd /mm"),Format([Дата_рождения],"dd\.mm"))))=3 Or 
((DateDiff("d",Format(Date(),"dd /mm"),Format([Дата_рождения],"dd\.mm"))))=-1) 
AND ((Сотрудники.Дата_уволнения) Is Null));
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.

Последний раз редактировалось Aleksandr H.; 30.09.2016 в 12:01.
Aleksandr H. вне форума Ответить с цитированием
Старый 30.09.2016, 12:12   #9
Avetis62
Пользователь
 
Регистрация: 15.03.2016
Сообщений: 80
По умолчанию

Уважаемый Александр, я в запросе поставил Ваш код, но она показывает только прошедший День рождения.
Avetis62 вне форума Ответить с цитированием
Старый 30.09.2016, 14:27   #10
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Вы уверенны что в таблице есть человек з днем рождения 3 октября?
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Напоминание о событии Avetis62 Microsoft Office Access 8 14.04.2016 23:53
Приближение функций методом Чебышева. Упрощение многочлена. Visual Basic 6.0 MAV_alex Помощь студентам 0 23.04.2012 22:46
Приближение изображения Proekt2012 HTML и CSS 6 24.12.2010 14:03
Приближение и удаление от текстуры.(Opengl) peredozer Мультимедиа в Delphi 3 10.05.2010 02:59
Графики. Приближение(зум) rzrwolf Microsoft Office Excel 4 06.01.2009 11:32