Вниз
Скачать: CL | DM;

Потокобезопасный TADOQuery.Open, помогите советом!   Найти похожие ветки 

 
DBDEV   (2004-04-13 12:53) [0]

Собственно тема такая.
Нужно организовать чтение данных в отдельном потоке. Во-первых, освободить поток интерфейса, а во-вторых сделать окошко  с Progress Bar-ом.

TADOQuery.OnFetchProgress не адекватен.

Может у кого есть действующие примеры и решения. За исходники буду благодарен!


 
sniknik ©   (2004-04-13 13:03) [1]

> TADOQuery.OnFetchProgress не адекватен.
люблю подобные бездоказательные заявления.


 
DBDEV   (2004-04-13 13:05) [2]

По крайней мере в моем случае. попытка выполнить:

void __fastcall TForm1::ADODataSet1FetchProgress(TCustomADODataSet *DataSet, int Progress, int MaxProgress, TEventStatus &EventStatus)

{
 Caption = "Percent complete: " +
   IntToStr(Trunc(Progress / MaxProgress * 100)) + "%";
 Application->ProcessMessages;
}


Приводит к 0% в Caption-е и сразу 100% после. Никакого эффекта прогресса, хотя операция занимает 3-8 сек.


 
sniknik ©   (2004-04-13 13:09) [3]

а режим асинхронного получения данных включен? подозреваю нет (т.что это ты неадекватен, пока во всяком случае).


 
DBDEV   (2004-04-13 13:17) [4]

> а режим асинхронного получения данных включен?
А как его включать? Где?


 
DBDEV   (2004-04-13 13:30) [5]

> а режим асинхронного получения данных включен?
А как его включать? Где?


 
clickmaker ©   (2004-04-13 13:55) [6]

ExecuteOptions := [eoAsyncFetch]


 
sniknik ©   (2004-04-13 14:28) [7]

clickmaker ©   (13.04.04 13:55) [6]
;) не неправильно, он же получение данных делает (ADODataSet1FetchProgress) а не выполнение.
но направление уже есть, догадается.


 
clickmaker ©   (2004-04-13 14:56) [8]


> sniknik ©   (13.04.04 14:28) [7]

На выполнение есть eoAsyncExecute. Или я че-то не так понял? :)


 
sniknik ©   (2004-04-13 15:15) [9]

eoAsyncExecute это значит запрос будет выполнятся асинхронно (а не фетчится), т.е. сразу после Open получим возврат в программу, с рекордсетом as is на тот момент. сработает только событие на окончание выполнения (ExecuteComplete) у коннекта, а FetchProgress нет, а ему нужен именно он.


 
DBDEV   (2004-04-13 15:35) [10]

2 sniknik: и как же быть?


 
sniknik ©   (2004-04-13 23:26) [11]

поставить асинхронное получение данных, если еще не догадался то ExecuteOptions := [eoAsyncFetch]


 
DBDEV   (2004-04-15 13:43) [12]

2 sniknik: какой же ты умный!



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.031 c
1-1082436350
Orc
2004-04-20 08:45
2004.04.11
Подсветка синтаксиса


7-1079991197
neodiX
2004-03-23 00:33
2004.04.11
Detect WinLogon window in winXP


3-1079435244
genemy
2004-03-16 14:07
2004.04.11
cross-tab


4-1079351543
Talla2k
2004-03-15 14:52
2004.04.11
аналог SelLength на WinApi


6-1079099155
girich
2004-03-12 16:45
2004.04.11
Удален. машина как залогинится, есть физич. канал связи




   Наверх