Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.04.11;
Скачать: CL | DM;

Вниз

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

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

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

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

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


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

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

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

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


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

> 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 сек.


 
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]

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


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

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


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

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


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

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


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

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


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

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


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

ExecuteOptions := [eoAsyncFetch]


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

ExecuteOptions := [eoAsyncFetch]


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

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


 
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. Или я че-то не так понял? :)


 
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 нет, а ему нужен именно он.


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

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


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

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


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

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


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

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


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

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


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

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


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

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



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

Текущий архив: 2004.04.11;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.035 c
3-1081441564
Somebody
2004-04-08 20:26
2004.05.09
http://www.ibase.ru/devinfo/dbexpress.htm


9-1069917335
Агент Смит [8]
2003-11-27 10:15
2004.05.09
Ломаная линия OpenGL


1-1082815871
Sorry
2004-04-24 18:11
2004.05.09
Memo


4-1079367573
Vilux
2004-03-15 19:19
2004.05.09
Использование sendmessage


14-1082459041
Dmitrij_K
2004-04-20 15:04
2004.05.09
Оконный глюк





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский