Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как избежать от неотвечания на события :) / 8 сообщений из 8, страница 1 из 1
10.02.2005, 08:59:46
    #32909352
Farkhod
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как избежать от неотвечания на события :)
При нажатии на кнопку запускается запрос, прога берет из грида и кидает в эксель. И в это-же время выходит окошка типа "Подождите..." и в этой формочке есть progress bar. Так вот при нажатии на кнопку зароса сам запрос обрабатывается но изменение progressbar'а не отображается. И вообще на этой "подождите"-форме ни какие графические изменения не отображаются во время выполнения того запроса. По моему VB отдает все ресурсы машина на обработку первого запроса а события информативной формы не обрабатыватся в это время. Я раньше где-то на каком-то форуме видил такой код на VB если его написать на первую строку процедуры нажатию кнопки то во время выполнения какой-то долгой функции прога будет реагировать и на другие события. Вот тока вспомнить не могу....:(
Может кто подскажет
Спасибо.
...
Рейтинг: 0 / 0
10.02.2005, 09:15:24
    #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
10.02.2005, 09:20:43
    #32909378
Farkhod
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как избежать от неотвечания на события :)
да нет с запросом все впорядке я так и работаю с ним.
Код: plaintext
xcl.Range("A2").CopyFromRecordset rs( 0 )
я вроде нашел что искал это - DoEvents
Спасибо.
...
Рейтинг: 0 / 0
10.02.2005, 10:08:25
    #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
10.02.2005, 12:50:37
    #32909998
Magnus23
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как избежать от неотвечания на события :)
Если долго выполняется CopyFromRecordset, то тут увы ничего не поделаешь.
Разве что пытаться реализовать мнгопоточную обработку, т.е. в одном потоке показывать форму а в другом высти обработку. Но реализация многопоточности на VB это гемор тот еще.

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


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