![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Потокобезопасный 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 не адекватен.
люблю подобные бездоказательные заявления.