Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.09.15;
Скачать: [xml.tar.bz2];

Вниз

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

 
Игорь Ч   (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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.032 c
14-48704
Ahmad K
2003-08-28 04:57
2003.09.15
Две операционки.


3-48439
alex-ran
2003-08-26 12:07
2003.09.15
Параметрический запрос


14-48717
Ahmad K
2003-08-26 02:43
2003.09.15
Delphi 7 vs Delphi 3


3-48450
Nestor
2003-08-26 14:44
2003.09.15
Проблема при выводе в Label


1-48617
Jee
2003-09-03 10:08
2003.09.15
Полнотекстовый поиск





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский