Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Потокобезопасный TADOQuery.Open, помогите советом! [MSSQL]


DBDEV ©   (2004-04-13 12:53:00) 

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

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

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


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

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


sniknik   (2004-04-13 23:26:00) [2]

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


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

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


sniknik   (2004-04-13 15:15:00) [4]

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


clickmaker   (2004-04-13 14:56:00) [5]


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

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


sniknik   (2004-04-13 14:28:00) [6]

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


clickmaker   (2004-04-13 13:55:00) [7]

ExecuteOptions := [eoAsyncFetch]


DBDEV   (2004-04-13 13:30:00) [8]

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


DBDEV   (2004-04-13 13:17:00) [9]

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


sniknik   (2004-04-13 13:09:00) [10]

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


DBDEV   (2004-04-13 13:05:00) [11]

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

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:03:00) [12]

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо