Вниз
Скачать: 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
7-1075224980
Дмон
2004-01-27 20:36
2004.04.11
Печать в 9х и в W2K


3-1082016656
Евген
2004-04-15 12:10
2004.04.11
Вопрос о DBLookupComboBox


3-1082013863
ksa2002
2004-04-15 11:24
2004.04.11
Ошибка при присвоение значения переменной procedure в inter base


9-1065523303
Иван.
2003-10-07 14:41
2004.04.11
ИСХОДНИК.


9-1071875450
HolyMan
2003-12-20 02:10
2004.04.11
Определение FreeForm




   Наверх