powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Анимашка на форме пока выполняется что-нибудь очень долгое.
7 сообщений из 7, страница 1 из 1
Анимашка на форме пока выполняется что-нибудь очень долгое.
    #32690603
Карлик Нос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можно ли такое сделать? Если можно, то:
1. Как запускать, пока параллельно выполняется длинная(~4минуты) процедура?
2. И где взять эту самую анимашку?
Ну или еще что-нибудь, чтоб имитировало процесс.
Песочные часы не совсем подходят - когда они долго крутятся пользователь начинает нервничать, хватать всех за рукава, вопить, что программа зависла, истерически жать на клавиши и щелкать мышью на чем попало..
Понятно, что и с анимашкой может зависнуть, но чисто психологически ему спокойнее - на экране мелькает что-то отличное от стандартных песочных часов, значит вроде как работает.
Прогрессбар тоже не катит, привязать его не к чему - в процедуре два сохраненных запроса, очень больших и очень медленных.
...
Рейтинг: 0 / 0
Анимашка на форме пока выполняется что-нибудь очень долгое.
    #32690637
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Карлик Нос1. Как запускать, пока параллельно выполняется длинная(~4минуты) процедура?
В самой процедуре надо поставить DoEvents - чтобы выполнялось почаще.

Карлик Нос2. И где взять эту самую анимашку?
На событие таймера можно менять координаты и т.п. чего-нибудь.

Карлик НосПрогрессбар тоже не катит, привязать его не к чему - в процедуре два сохраненных запроса, очень больших и очень медленных.
Это как раз можно.

1. Пишем функцию, которая принимает один параметр, возвращает его же, но еще и продвигает прогрессбар.
2. В сохраненном запросе в одном из полей ставим обращение к этой функции.

Вариант: чтобы не надо было заранее узнавать количество записей, можно вместо прогрессбара выводить на экран надпись: Обработано ... записей.

Еще вариант: вместо этой надписи или прогрессбара - тот самый DoEvents.

И еще вариант: управление анимашкой из той же функции, а таймер тогда не нужен.
...
Рейтинг: 0 / 0
Анимашка на форме пока выполняется что-нибудь очень долгое.
    #32690749
Карлик Нос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да я с этим DoEvents как-то не очень...
Прочел Хелп: "передает управление...", но так и не проникся "зачем он трудовому народу?", видел в чужих кодах этот DoEvents вставлен, но после него никаких переходов нет, стоит он посреди кода, а зачем - не понятно.
Может объяснит кто: куда его вставлять? Ну, например, в моем случае - до команды выполнить запрос или еще где?
...
Рейтинг: 0 / 0
Анимашка на форме пока выполняется что-нибудь очень долгое.
    #32690796
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Допустим, запущено два процесса. И надо, чтобы первый чуть-чуть задержался и дал второму сработать. Вот для этого и служит команда DoEvents.

Например, у меня запущена программа, которая делает что-то тяжелое в течение часа. И в этот момент я кликнул мышкой по кнопке. Если в той программе нет ни одного DoEvents, то кнопка сработает тогда, когда кончится час. А если есть, то на нем и сработает.
...
Рейтинг: 0 / 0
Анимашка на форме пока выполняется что-нибудь очень долгое.
    #32690824
Карлик Нос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Т.е., если запустить процедуру:
Код: plaintext
1.
2.
3.
Sub MySub
DoEvents
CurrentDb.Execute ("Запрос на час")
End Sub
, то все нажатия кнопки будут процедурой замечены сразу, а если без DoEvents, то потом?
Владимир Саныч
управление анимашкой из той же функции, а таймер тогда не нужен
тут не ясно: если в процедуре уже произошел переход на строку
Код: plaintext
CurrentDb.Execute ("Запрос на час")
, то она на этой строке час и будет висеть.
...
Рейтинг: 0 / 0
Анимашка на форме пока выполняется что-нибудь очень долгое.
    #32690852
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Да нет. DoEvents должен быть не перед "Запрос на час", а внутри и много раз. См. в моем посте от вчера, 14:00 пункты 1 и 2.
...
Рейтинг: 0 / 0
Анимашка на форме пока выполняется что-нибудь очень долгое.
    #32690855
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Пример.

Есть запрос, который работает долго:
update t set a=b, c=d, e=f, g=h

Пишем функцию:
function xxx(x as variant)as variant
doevents
xxx=x
end function

Вставляем ее в запрос:
update t set a=xxx(b), c=d, e=f, g=h

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


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