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