Sheduler/Расписание

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
AF
Начинающий
Начинающий
 
Сообщения: 5
Зарегистрирован: 18.07.2002 (Чт) 23:59
Откуда: Russia

Sheduler/Расписание

Сообщение AF » 26.06.2005 (Вс) 18:21

Появилась необходимость встроить в программу расписание по типу OutLook подскажить пример. Спасибо
Код: Выделить всё

MiGan
Обычный пользователь
Обычный пользователь
 
Сообщения: 60
Зарегистрирован: 02.05.2005 (Пн) 13:27

Сообщение MiGan » 30.06.2005 (Чт) 15:47

Ну допустим так - кладешь на форму таймер с событием Timer каждую секунду. В событии пишешь код проверки запланированных заданий на этот момент времени. Можешь создать базу таких событий в Аксессе - каждый раз при вызове события делать запрос наподобии SELECT * FROM TASKS WHERE TASK_TIME = #TIME# (ну а вместо TIME уже текущее значение date, time и чего хошь подставляй! Только надо подумать ишо, как лучше оптимизировать эту таблицу, ведь если запланированных заданий там буде много, то и поиск по ним буде долог и муторен!

Можно вместо базы к-либо просто в файл все это дело писать, но тогда нужно ч-то типа индексного файла предусмотреть, опять-таки для ускорения доступа.

Если чего, пиши, будем разбираться 8)

Snussi
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 151
Зарегистрирован: 21.07.2004 (Ср) 18:08
Откуда: Москва, Россия

Сообщение Snussi » 30.06.2005 (Чт) 16:42

Предлагаю проверять не чаще раза в минуту.
Плюс завести 2 таблицы - напомненные и ненапомненные задачи.

SELECT * FROM TASKS WHERE TASK_TIME = #TIME# - работать не будет, т.к. время учитывается, имхо, до миллисекунд.

Предлагаю алгоритм:
1. SELECT * FROM CURRENTTASKS WHERE TASK_TIME <= #TIME#
2. INSERT INTO COMPLETEDTASKS SELECT * FROM CURRENTTASKS WHERE TASK_TIME <= #TIME#
3. DELETE FROM CURRENTTASKS WHERE TASK_TIME <= #TIME#

Вот примерно так.

val
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 168
Зарегистрирован: 14.11.2002 (Чт) 1:14

Сообщение val » 30.06.2005 (Чт) 17:27

Или же сделать TASK_TIME текстовым полем а затем:

sNow = Format$(Now, "hh:nn")
SELECT * FROM TASKS WHERE TASK_TIME = sNow

Также чтобы не создавать таблицу COMPLETEDTASKS,
создать поле CompletedFlag в таблице TASKS.
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.

val
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 168
Зарегистрирован: 14.11.2002 (Чт) 1:14

Сообщение val » 30.06.2005 (Чт) 17:36

предыдущий пост естественно будет работать только при интервале 1 мин.
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.

Snussi
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 151
Зарегистрирован: 21.07.2004 (Ср) 18:08
Откуда: Москва, Россия

Сообщение Snussi » 01.07.2005 (Пт) 9:23

Мне кажется, что условие с <= надежнее :) Например, в случае, если в момент напоминания программа просто не работала.

А вторая таблица нужна для случая, когда данных много и они объемные (например, каждая запись содержит JPEG метра на полтора) - тогда даже поиск с флагом будет достаточно долог.

val
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 168
Зарегистрирован: 14.11.2002 (Чт) 1:14

Сообщение val » 01.07.2005 (Пт) 14:51

Согласен....
Условие с <= будет надежнее :)
Я просто дал человеку альтернативу...
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: SemrushBot и гости: 168

    TopList