Непрорисовка окон в процессе работы Access2000
От: shurik13 Россия  
Дата: 25.05.03 20:11
Оценка:
Привет всем.
У меня есть некая база на Access2000. Внутри на VB зашита некая логика, которая в общем случае работает достаточно долго (например, экспорт нескольких таблиц в mysql через odbc).
Так вот. Открываю я формочку, нажимаю на кнопку --- и оно начинает работать. При этом Access как-бы подвисает, окна свои не перерисовывает.
Я же хочу вывести на форму что-нибудь вроде status bar, чтобы пользователю было не столь грустно ожидать окончания процесса.
Как заставить Access отрисовывать то, что я вывожу, не дожидаясь, пока освободятся ресурсы (то есть фактически пока отработает основной алгоритм)?
.Refresh (или что-то в этом роде, не помню) на форме пробовал, не помогает.
---
Александр Ющенко
Re: Непрорисовка окон в процессе работы Access2000
От: shurik13 Россия  
Дата: 26.05.03 06:54
Оценка:
S> Как заставить Access отрисовывать то, что я вывожу, не дожидаясь, пока освободятся ресурсы (то есть фактически пока отработает основной алгоритм)?
S> .Refresh (или что-то в этом роде, не помню) на форме пробовал, не помогает.

Уже сам нашел.
.Repaint
---
Александр Ющенко
Re[2]: Непрорисовка окон в процессе работы Access2000
От: shurik13 Россия  
Дата: 26.05.03 07:59
Оценка:
S>> Как заставить Access отрисовывать то, что я вывожу, не дожидаясь, пока освободятся ресурсы (то есть фактически пока отработает основной алгоритм)?
S>> .Refresh (или что-то в этом роде, не помню) на форме пробовал, не помогает.

S> Уже сам нашел.

S> .Repaint

Рановато порадовался.
Все равно частенько не отрисовывает.
Есть у кого-нибудь еще идеи?
---
Александр Ющенко
Re[3]: Непрорисовка окон в процессе работы Access2000
От: alexdr Россия  
Дата: 26.05.03 15:03
Оценка:
Здравствуйте, shurik13, Вы писали:

S>>> Как заставить Access отрисовывать то, что я вывожу, не дожидаясь, пока освободятся ресурсы (то есть фактически пока отработает основной алгоритм)?


S> Есть у кого-нибудь еще идеи?


А асинхронные запросы не помогут?
Re[4]: Непрорисовка окон в процессе работы Access2000
От: shurik13 Россия  
Дата: 26.05.03 15:14
Оценка:
S>>>> Как заставить Access отрисовывать то, что я вывожу, не дожидаясь, пока освободятся ресурсы (то есть фактически пока отработает основной алгоритм)?

S>> Есть у кого-нибудь еще идеи?


A>А асинхронные запросы не помогут?


А разве Access умеет? Если да, то как?
А если я там не запросы кручу, а код на vb, просто долго?
---
Александр Ющенко
Re: Многопоточность Access не поддерживает
От: wara  
Дата: 26.05.03 18:24
Оценка:
Re[5]: Непрорисовка окон в процессе работы Access2000
От: alexdr Россия  
Дата: 26.05.03 19:08
Оценка:
Здравствуйте, shurik13, Вы писали:

A>>А асинхронные запросы не помогут?


S> А разве Access умеет? Если да, то как?

S> А если я там не запросы кручу, а код на vb, просто долго?

Не знаю, как более ранние версии. Речь идет об Access XP. А там примерно так:

Set recordset = object.OpenRecordset (type, options, lockedits), где в options есть и такая: dbRunAsync (Runs an asynchronous query (ODBCDirect workspaces only)).

Та же опция есть и для исполняемых запросов, когда применяетс метод Execute. Вот только сам в Access этим не разу не пользовался. Только теоретически.
Re: Непрорисовка окон в процессе работы Access2000
От: СергО Украина  
Дата: 26.05.03 21:49
Оценка:
Здравствуйте, shurik13, Вы писали:

S> Привет всем.

S> У меня есть некая база на Access2000. Внутри на VB зашита некая логика, которая в общем случае работает достаточно долго (например, экспорт нескольких таблиц в mysql через odbc).
S> Так вот. Открываю я формочку, нажимаю на кнопку --- и оно начинает работать. При этом Access как-бы подвисает, окна свои не перерисовывает.
S>Я же хочу вывести на форму что-нибудь вроде status bar, чтобы пользователю было не столь грустно ожидать окончания процесса.
S> Как заставить Access отрисовывать то, что я вывожу, не дожидаясь, пока освободятся ресурсы (то есть фактически пока отработает основной алгоритм)?
S> .Refresh (или что-то в этом роде, не помню) на форме пробовал, не помогает.

Не знаю насколько тут оно поможет, но
если у в цикле что-то работает долго, то полезно в цикле иногда вызывать

DoEvents

Эта функция "прокачает" оконные сообщения в очереди, в том числе и WM_PAINT,
что позволит прорисовывать изменения в status bar, или нажать кнопку Cancel и т. д.


Сергей
Re[5]: Непрорисовка_окон_в_процессе_работы_Access2000
От: AntoxaM  
Дата: 27.05.03 07:18
Оценка:
shurik13 wrote:
> А если я там не запросы кручу, а код на vb, просто долго?
используй DoEvents

--
Best Regards,
Anton
Posted via RSDN NNTP Server 1.5
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.