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

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

Как отменить выполнение SQL-запроса (SELECT) во время выполнения? [D5, D6, MSSQL]


Nikolai_S ©   (2002-07-31 15:29:00) 

Вопрос к знатокам ADO:
Как сделать так, чтобы во время выполнения запроса на выборку большого объема данных в ProgressBar отображался % выполнения запроса, а сам запрос можно было в любой момент отменить?

У TADODataSet существует свойство ExecuteOptions, где можно установить eoAsyncExecute и eoAsyncFetch. Тогда выполнение происходит в отдельном потоке. Однако это не помогает, так как нельзя отменить выполнение запроса и в событии OnFetchProgress процент указывается неравномерно.


SaS13   (2002-08-01 16:04:00) [1]


> Я видел какие-то компоненты

Было бы интересно на них, а лучше ни их исходники, посмотреть.
Может кинешь ссылочку


Nikolai_S   (2002-08-01 15:17:00) [2]

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


Johnmen   (2002-08-01 09:59:00) [3]

Достоверный процент прогресса - вешь нереализуемая в принципе !


Nikolai_S   (2002-08-01 09:54:00) [4]

Согласен, что если выполнять через TADOCommand, то есть метод Cancel, который отменит выполение запроса. Но как отловить процент выполнения запроса? У TADOCommand нет событий. Даже если выполнять через TADOTable или TADOQuery, то там есть событие OnFetchProgress - однако с помощью этого события нельзя вывести процент выполнения запроса. У события есть параметры Progress, MaxProgress. Но MaxProgress почему-то тоже меняется вместе с Progress. И получается, что сначала львиную долю времени горит 0 %, а когда запрос почти выполнен, то горит около 80% - а потом сразу 100%.


Fiend   (2002-07-31 17:32:00) [5]

Отменить можно методом cancel, как сказали выше, но тогда надо выполнять запрос с TADOCommand, у него есть этот метод.


wicked   (2002-07-31 16:55:00) [6]

отменить - метод cancel.....


Наверх

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