Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Возможность временной остановки выполнения функции / 9 сообщений из 9, страница 1 из 1
28.04.2004, 16:55
    #32501214
AVKr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможность временной остановки выполнения функции
Вопросик насущный появился.

Access-2000. В модуле хранится злобная функция, которая перелопачивает БД, что-то выбирает, перекидывает в MS Word, подгружает туда же картинки и т.п. Все происходит очень неторопливо (полностью функция отрабатывает минут за 15). На это время Акцесс становится просто невменяемым, т.е абсолютно ни на что не реагирует. Остановить процесс можно либо закрыв Wordовский документ, в который передаются данные (и вызвав тем самым ошибку), либо через диспетчер задач.

Теперь, собственно, вопрос. Как можно заставить Акцесс реагировать на воздействие во время выполнения функции. Например, чтобы при нажатии Esc получить MsgBox типа "Прекратить или продолжить?"
...
Рейтинг: 0 / 0
28.04.2004, 17:49
    #32501365
Alexus12
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможность временной остановки выполнения функции
Значиться так...

1/ Создаешь модуль
В нем в третьей сверху строчке
глобальные переменные
Public fProgress as integer, fCancel as boolean


2/ Создаешь форму formProgress
кидаешь на нее кнопку Command1
и метку Label1
ставишь у формы свойство TimerInterval = 1000 (1 сек )
и пишешь в ее (формы) коде обработчики:

Private Sub Form_Timer()
Label1.caption=fProgress
Me.Repaint
End Sub

Private Sub Command1_Click()
fCancel=TRUE
End Sub

3/ В коде долгой процедуры
в тело каждого долгоиграющего цикла
(Do...loop / for..next)
вставляешь ОДИН Doevents,
расчет прогресса
и отменяющую команду:

Do
...
fProgress=чему-то нужному
Doevents
If fCancel then
здесь пожешь спросить пользователя о подтверждении
и если да : exit do:exit sub
end if
loop


Все!
...
Рейтинг: 0 / 0
28.04.2004, 17:50
    #32501369
Alexus12
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможность временной остановки выполнения функции
естественно,
что перед запуском долгого процесса
эту форму надо открыть поверх всех

docmd.openform ....., acdialog

а по завершении или прерывании - закрыть
...
Рейтинг: 0 / 0
28.04.2004, 17:55
    #32501383
SergeySV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможность временной остановки выполнения функции
мне больше нравится использовать API Sleep, синтаксис примитив (не считая конечно декларации) а процесс реально останавливается и не грузит проц как если вертит пустой цикл с DoEvents
...
Рейтинг: 0 / 0
28.04.2004, 17:56
    #32501387
SergeySV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможность временной остановки выполнения функции
Sleep конечно если надо конкретно заснуть
...
Рейтинг: 0 / 0
28.04.2004, 18:02
    #32501400
Alexus12
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможность временной остановки выполнения функции
2 SergeySV:

а человек-то хочет не спать, а уметь прерывать ;))))
...
Рейтинг: 0 / 0
28.04.2004, 18:04
    #32501404
AVKr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможность временной остановки выполнения функции
...
Рейтинг: 0 / 0
28.04.2004, 18:34
    #32501467
Victosha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможность временной остановки выполнения функции
для этого придуман DoEvents
...
Рейтинг: 0 / 0
28.04.2004, 18:36
    #32501470
AVKr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможность временной остановки выполнения функции
2 Alexus12:

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


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