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

Вниз

Асинхронная выборка данных   Найти похожие ветки 

 
Игорь Ч ©   (2003-08-23 08:19) [0]

ХП надо выполнить в фоновом режиме.
ХП должна возвращать два набора данных.
Cтавлю флажки ExecuteOptions - coAsyncExecute и coAsyncFetch - процедура выполняется ассинхронно но не возвращаются наборы данных.
Ставлю только ExecuteOptions - coAsyncFetch - наборы данных возвращаются, но процедура все забивает.
Как сделать чтобы и наборы возвращались и ХП выполнялась ассинхронно (и волки ... и овцы ... :) )


 
sniknik ©   (2003-08-23 21:51) [1]

чего то делаеш не так
у меня и с coAsyncFetch ничего не забивает и coAsyncExecute рекордсет возвращает. ты его наверное не там береш.


 
Игорь Ч ©   (2003-08-24 19:14) [2]

Ой чавото я плохо врубаюсь (в отпуск надо :))) )
Допустим мне надо выполнить ХП
например:
CREATE PROCEDURE pr1 AS
....
SELECT * FROM tab1
....


создаю ds: TADODataSource с пропертями:
CommandText = pr1
CommandType = cmdStoredProc
coAsyncExecute = false
coAsyncFetch = true


далее в программе делаю
ds.Open

и ожидаю OnFetchComplete

при этом на все время "ожидания" программа блокируется.

ежели я ставлю оба флажка
coAsyncExecute = true
coAsyncFetch = true

то в этом случае все работает как хочется (в ассинхронном режиме), но в ds не возвращается набор данных.

Что я тут не так делаю ???


 
sniknik ©   (2003-08-24 19:50) [3]

> Что я тут не так делаю ???
тут ты ждеш рекордсет в ds (во всяком случае о другом не пишеш), а какой там рекордсет если он бросается сразу после перехода в асинхронный режим?
(я же говорил не там, догадался)
бери его в событии onExecuteComplete.


 
Игорь Ч ©   (2003-08-25 13:16) [4]

Ага, понятно. Только теперь непонятно, как отслеживать это событие. Оно ведь у ADOConnect и появляется практиески после любой операции с компонентами прицепленными к нему. Как определить, что его отправил именно ds, а не книть другой DataSet ???
Вы меня простите за дотошность, не могу найти вразумительной доки по этому поводу.


 
sniknik ©   (2003-08-25 15:59) [5]

можно по запросу (если честно то не делал так, не видел смысла в нескольких асинхронных запросах), может можно и по другому.
неважно сделай так
Label1.Caption:= Command.CommandText;
в onExecuteComplete, увидиш знакомый запрос. (но вот сравнивать по длинной строке нехорошо, лутше найти еще чтото общее, имя первого поля в рекордсете к примеру). но вообще как уже говорил, не задавался этим вопросом.



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

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

Наверх




Память: 0.48 MB
Время: 0.022 c
1-48571
RIPer
2003-09-04 11:21
2003.09.15
Печать документа Word


7-48798
Вася Пупкин
2003-07-01 18:09
2003.09.15
Загрузочный вирус! Казалось бы.. [D6, WinXP] (восстановление)


1-48635
Star Wars
2003-09-03 09:09
2003.09.15
Массив динамических массивов


7-48812
Geka
2003-06-30 11:03
2003.09.15
Разница в часах между Now и какой-то датой в прошлом


3-48445
BKGG
2003-08-24 18:41
2003.09.15
Я питаюс присоединиться к таблице Telephones, расположенную в баз