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

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

Выполнение ХП асинхронно (ADO и MSSQL)


Страницы:   1 2

DeadMeat ©   (2007-07-07 12:44:00) 

Здравсте всем.
Вообщем вот какая закавыка. По условию задачи, надо выполнить запрос на выборку из таблицы с отображением текущего состояния выборки. Выборка простая и быстрая, но данных много. Сделал асинхронно (ExecuteOptions = [eoAsyncExecute, eoAsyncFetchNonBlocking]). Все пучком. Идет процесс отображения получения данных прогрессбаром. В начале я используя условия этой выборки получил COUNT(*) и применил результат в качестве количества записей, которые надо получить. Для прогрессбара ведь нужно установить максимум, а в OnFetchProgress значение переменной MaxProgress не дает реального количества. Затем в тамже (в OnFetchProgress) сделал отображение текущего состояния прогрессбара, используя Progress. И в конце "по приходу" OnFetchComplete отображаю все записи. Все работает. Нареканий нет.
Теперь следующая проблема. Надо сделать примерно тоже самое, но ни простой выборкой, а вызвать хранимую процедуру. Вот тут и обломс. Использовал в начале ADOCommand, но у него нет таких обработчиков. Потом взял ADOStoredProc. Тут ситуация какая. Я заранее не могу выяснить количество записей, которые вернет процедура. Поэтому мне прогрессбар отображать не надо, а просто сделать так, чтобы приложение не висело зависшим, пока работает ХП. Вот и начались проблемы. Используя таскменеджер я вижу, что процедура уже отработала на серваке, но вот OnFetchComplete почему-то "не приходит". Количество данных, которые возвращает процедура не так уж велико. Около 1000 записей, а то и меньше. А программа так и висит, ожидая "конца".
В чем может быть проблема?

ЗЫ. На всякий случай, может это нужная информация - процедура возвращает несколько рекордсетов.


sniknik   (2007-07-07 13:31:00) [21]

> с ADODataSet. Результат тотже. Не приходит OnFetchComplete.
у меня приходит... взял для примера процедуру sp_help, она возвращает 2 связанных рекордсета.

> В чем может быть проблема?
может быть в процедуре, всякие там set nocount on пропущены, или д.р. неправильно делаешь в общем. проверь на стандартной.


DeadMeat   (2007-07-07 12:57:00) [22]

Проверил тоже самое с ADODataSet. Результат тотже. Не приходит OnFetchComplete.


Страницы:   1 2

Наверх

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