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

Вниз

Прогресс выборки TADOQuery нерегулярный   Найти похожие ветки 

 
Tack   (2008-01-30 11:45) [0]

Делаю выборку всех записей из таблицы MS Access. Использую TADOQuery (Ms Jet) с флагом ExecuteOptions = eoAsyncFetchNonBlocking
Для отображения асинхронного прогресса выборки у TADOQuery есть событие OnFetchProgress, которому передаются Progress, MaxProgress (Integer), кол-во записей соответственно прочитанных и оставшихся.

Попытка отображения прогресса на градуснике по этим параметрам приводит к тому, что прогресс очень быстро доходит до 99% и ждет завершения выборки, не особо двигаясь вперед, т.к. по ходу выборки Progress и MaxProgress уравниваются.

Что сделать, чтобы выборка отображалась на индикаторе более регулярно?


 
sniknik ©   (2008-01-30 11:57) [1]

поменять флаг... eoAsyncFetchNonBlocking на чтото другое... не помню, но точно не на неблокирующий (скорее на просто асинхронный).
и еще чтото, по мелочи, надо посмотреть. но главное надо "убить" TADOQuery и заменить его TADODataSet-ом.


 
sniknik ©   (2008-01-30 12:10) [2]

хотя нет, сорри, с eoAsyncFetchNonBlocking тоже работает, дело в другом.

а вот то, что MaxProgress содержит общее количество это не верно, в нем количество обработанных на данный момент, в Progress количество переданных на клиента...
т.что чтобы узнать общее надо предварительно запрос на количество делать, и молиться чтобы оно не изменилось в процессе. ;о)


 
DiamondShark ©   (2008-01-30 12:17) [3]

Редко какой провайдер сообщает точное значение счётчика строк для результирующего набора.

Остаётся только смириться.


 
ANB ©   (2008-01-30 12:46) [4]


> Tack   (30.01.08 11:45)

Прогресс отбора имеет смысл только для отображения процесса фетча большого количества записей как результата очень простого запроса.
Типа селект * фром Табле1.
Однако такие запросы не есть хорошо, а иногда могут просто завалить сервер.
В других же случаях, как правило, большая часть времени уходит на обработку запроса, а не на передачу строк на клиента. И в этих случаях прогресс бессмысленен.


 
Tack   (2008-01-30 13:01) [5]

ну что ж, тогда сделаю просто какую-нибудь крутилку "занятости системы", типа песочных часов.
Всем спасибо.



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

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

Наверх




Память: 0.48 MB
Время: 0.02 c
2-1212662430
TBase_Tree
2008-06-05 14:40
2008.07.06
Хук не работает, подскажите в чем дело ...


2-1212738159
GreyWolf
2008-06-06 11:42
2008.07.06
Архитектура приложения


2-1212647758
Vasja
2008-06-05 10:35
2008.07.06
как в sql задать условие сортировки?


11-1184554609
ЛАМА_0
2007-07-16 06:56
2008.07.06
Баг?.


15-1211296805
buzb
2008-05-20 19:20
2008.07.06
А есть ли возможность в Делфи 7 сворачивать функции как в 2007