powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как избежать от неотвечания на события :)
8 сообщений из 8, страница 1 из 1
Как избежать от неотвечания на события :)
    #32909352
Фотография Farkhod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При нажатии на кнопку запускается запрос, прога берет из грида и кидает в эксель. И в это-же время выходит окошка типа "Подождите..." и в этой формочке есть progress bar. Так вот при нажатии на кнопку зароса сам запрос обрабатывается но изменение progressbar'а не отображается. И вообще на этой "подождите"-форме ни какие графические изменения не отображаются во время выполнения того запроса. По моему VB отдает все ресурсы машина на обработку первого запроса а события информативной формы не обрабатыватся в это время. Я раньше где-то на каком-то форуме видил такой код на VB если его написать на первую строку процедуры нажатию кнопки то во время выполнения какой-то долгой функции прога будет реагировать и на другие события. Вот тока вспомнить не могу....:(
Может кто подскажет
Спасибо.
...
Рейтинг: 0 / 0
Как избежать от неотвечания на события :)
    #32909370
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вероятно поможет асинхронный запрос
т.е. надо создать объект типа ADODB.Command и сним поработать

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
   Set cmd = New ADODB.Command
   Set mrs = New ADODB.Recordset
    
   cmd.CommandTimeout =  0 
   cmd.CommandText = strSQL
   Set mcmd.ActiveConnection = cn
    
   mrs.Open mcmd, , adOpenKeyset, adLockReadOnly, adAsyncExecute

и потом отлавить когда запрос закончит свою работу и выполнить необходимые действия
...
Рейтинг: 0 / 0
Как избежать от неотвечания на события :)
    #32909378
Фотография Farkhod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да нет с запросом все впорядке я так и работаю с ним.
Код: plaintext
xcl.Range("A2").CopyFromRecordset rs( 0 )
я вроде нашел что искал это - DoEvents
Спасибо.
...
Рейтинг: 0 / 0
Как избежать от неотвечания на события :)
    #32909487
Фотография Farkhod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
почему-то и это не помогает...:(
вот код:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Private Sub CmdSend_Click()
Doevents
frmwait.show
call sendtoexcel
End sub


sub sendtoexcel
xcl.Range("A2").CopyFromRecordset rs( 0 )
...
end sub
Показывает форму frmwait и как-бы зависает на некоторое время а в это время на frmwait должен двигатся ProgressBar.
Помогите...
...
Рейтинг: 0 / 0
Как избежать от неотвечания на события :)
    #32909998
Фотография Magnus23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если долго выполняется CopyFromRecordset, то тут увы ничего не поделаешь.
Разве что пытаться реализовать мнгопоточную обработку, т.е. в одном потоке показывать форму а в другом высти обработку. Но реализация многопоточности на VB это гемор тот еще.

Magnus
...
Рейтинг: 0 / 0
Как избежать от неотвечания на события :)
    #32910093
marvan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я для этих целей (только копипрование шло из Excel в Access) разбивал выборку на части (1000 строк за раз) и выполнял её в цикле, отображая прогресс исполнения.
...
Рейтинг: 0 / 0
Как избежать от неотвечания на события :)
    #32910911
Dmitry Biryukov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а я пошёл другим путём:
создал ActiveX exe, который умеет progres-bar'ом управлять и перед вызовом "длинного" процеса его запускаю
та же самая многопоточность, но реализована абсолютно безгеморно
...
Рейтинг: 0 / 0
Как избежать от неотвечания на события :)
    #32910975
marvan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Dmitry Biryukov
вот интересно нафиг нужен прогресс бар если процесс не дискретный. Динамику чего он будет отображать? В таком случае можно AVI показывать, типа "работаю барин, погодь с недельку".
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как избежать от неотвечания на события :)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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