powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Индикация события для оператора
8 сообщений из 8, страница 1 из 1
Индикация события для оператора
    #39922693
Alex37
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет!

Хотел спросить у знатоков, каким лучше образом привлечь внимание оператора, если в базе данных наступило какое-либо событие. К примеру, есть таблица со столбцами "ФИО", "День рождения"...
Сейчас это решается запуском запроса при открытии определённой формы (FormaDR):
Код: sql
1.
2.
3.
4.
5.
SELECT Заказы.ФИО, Заказы.[Дата рождения], IIf((Month(Now())>Month([Дата Рождения]) Or 
(Month(Now())=Month([Дата Рождения])) And (Day(Now())>Day([Дата Рождения]) Or 
Day(Now())=Day([Дата Рождения]))),Year(Now())-Year([Дата Рождения]),Year(Now())-Year([Дата Рождения])-1) AS Возраст
FROM Заказы
WHERE (((Format([Дата рождения],"mmdd"))=Format(Date(),"mmdd")));


В таблице отображается ФИО, дата рождения и вычисляется возраст.
Но далеко не каждый день наступает событие, поэтому открывается пустая таблица запроса.

Как исключить показ пустой таблицы?

Access 2003.
...
Рейтинг: 0 / 0
Индикация события для оператора
    #39922703
ROI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex37
Всем привет!

Хотел спросить у знатоков, каким лучше образом привлечь внимание оператора, если в базе данных наступило какое-либо событие. К примеру, есть таблица со столбцами "ФИО", "День рождения"...
Сейчас это решается запуском запроса при открытии определённой формы (FormaDR):
Код: sql
1.
2.
3.
4.
5.
SELECT Заказы.ФИО, Заказы.[Дата рождения], IIf((Month(Now())>Month([Дата Рождения]) Or 
(Month(Now())=Month([Дата Рождения])) And (Day(Now())>Day([Дата Рождения]) Or 
Day(Now())=Day([Дата Рождения]))),Year(Now())-Year([Дата Рождения]),Year(Now())-Year([Дата Рождения])-1) AS Возраст
FROM Заказы
WHERE (((Format([Дата рождения],"mmdd"))=Format(Date(),"mmdd")));



В таблице отображается ФИО, дата рождения и вычисляется возраст.
Но далеко не каждый день наступает событие, поэтому открывается пустая таблица запроса.

Как исключить показ пустой таблицы?

Access 2003.

в форме проверка count
если 0 то не показывать таблицу
...
Рейтинг: 0 / 0
Индикация события для оператора
    #39922729
Alex37
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ROI,
Спасибо за ответ. Буду думать...
...
Рейтинг: 0 / 0
Индикация события для оператора
    #39922762
Alex37, что-то вы накрутили в запросе. По условию в WHERE он возвращает исключительно именинников сегодня т.е. месяц и день совпадают), а в IIf у вас - если месяц больше или если месяц тот же, но день больше... Зачем?
...
Рейтинг: 0 / 0
Индикация события для оператора
    #39922764
Alex37
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кривцов Анатолий,
Все правильно.
Запрос выдает список именинников СЕГОДНЯ. Вроде правильно всё работает. Проверял неоднократно. Ошибок не было.
Конечно, длинновато получилось...
...
Рейтинг: 0 / 0
Индикация события для оператора
    #39922780
Alex37
Все правильно.
Запрос выдает список именинников СЕГОДНЯ. Вроде правильно всё работает.
Я о том, что IIF здесь вообще не нужен. Просто Year(Date())-Year([Дата Рождения]
Видимо запрос задумывался без WHERE и показывал данные по всем людям.

А конкретно по вопросу, как вариант, можно при запуске БД выполнить DLookup или DCount с условием как в запросе. Если что-то возвращает - сообщить или открыть форму.
...
Рейтинг: 0 / 0
Индикация события для оператора
    #39922786
Alex37
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кривцов Анатолий
Alex37
Все правильно.
Запрос выдает список именинников СЕГОДНЯ. Вроде правильно всё работает.
Я о том, что IIF здесь вообще не нужен. Просто Year(Date())-Year([Дата Рождения]
Видимо запрос задумывался без WHERE и показывал данные по всем людям.

А конкретно по вопросу, как вариант, можно при запуске БД выполнить DLookup или DCount с условием как в запросе. Если что-то возвращает - сообщить или открыть форму.

Да, это я запрос на лету переделывал для форума, поторопился. Спасибо.
Код: sql
1.
2.
3.
SELECT Заказы.ФИО, Заказы.[Дата рождения], Year(Date())-Year([Дата Рождения]) AS Возраст
FROM Заказы
WHERE (((Format([Дата рождения],"mmdd"))=Format(Date(),"mmdd")));


Вечером попробую с DCount решить свой вопрос. В голове уже сформировались разные варианты. Надо пробовать.
Спасибо за помощь!
...
Рейтинг: 0 / 0
Индикация события для оператора
    #39923129
Alex37
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Получилось вот так - на кнопку открытия одной из форм приписан небольшой код:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
...
    Dim stDocName As String
    Dim stDocName2 As String
    Dim stLinkCriteria As String

    stDocName = "fAnalitika"
    DoCmd.OpenForm stDocName, , , stLinkCriteria
    
    'Запуск запроса/сообщения, если сегодня есть дни рождения
    stDocName2 = "зДеньРожденияСегодня"           'запрос
    If DCount("[ФИО]", stDocName2) > 0 Then
            'DoCmd.OpenQuery stDocName2, acNormal, acEdit  'выполнить запрос и показать
            MsgBox "Сегодня у нас день рождения!", 48, "Внимание!"
    End If
...


Работает! Выдает сообщение (или запускает запрос на выполнение) лишь когда сегодня, хотя бы у одного человека из списка, наступил день рождения.

Спасибо всем за помощь!
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Индикация события для оператора
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]