Как прекратить асинхронную выборку данных...
От: nikulin_ann  
Дата: 20.06.02 11:02
Оценка:
Как прекратить асинхронную выборку данных...

Выполняется запрос select. Выбирается долго асинхронно и иногда возникает ситуация что данные еще выбираются но они уже не нужны. Как прекратить выборку данных?

Коннекчусь через AdoConnection и у AdoQuery установлено eoAsyncFetch.
Результата запроса жду в событиии FetchComplete.
Как прекратить выборку данных?
Re: Как прекратить асинхронную выборку данных...
От: Алекс Россия http://wise-orm.com
Дата: 20.06.02 11:15
Оценка:
Здравствуйте nikulin_ann, Вы писали:

NA>Как прекратить асинхронную выборку данных...


NA>Выполняется запрос select. Выбирается долго асинхронно и иногда возникает ситуация что данные еще выбираются но они уже не нужны. Как прекратить выборку данных?


NA>Коннекчусь через AdoConnection и у AdoQuery установлено eoAsyncFetch.

NA>Результата запроса жду в событиии FetchComplete.
NA>Как прекратить выборку данных?

Use the Cancel method to terminate execution of an asynchronous method call (that is, a method invoked with the adAsyncConnect, adAsyncExecute, or adAsyncFetch option).
MSDN

На Delphi выглядит примерно так:
AdoQuery1.Recordset.Cancel;
Re[2]: Как прекратить асинхронную выборку данных...
От: Максим Алексейкин Россия  
Дата: 20.06.02 13:44
Оценка:
Здравствуйте Алекс, Вы писали:

А>Здравствуйте nikulin_ann, Вы писали:


NA>>Как прекратить асинхронную выборку данных...


NA>>Выполняется запрос select. Выбирается долго асинхронно и иногда возникает ситуация что данные еще выбираются но они уже не нужны. Как прекратить выборку данных?


NA>>Коннекчусь через AdoConnection и у AdoQuery установлено eoAsyncFetch.

NA>>Результата запроса жду в событиии FetchComplete.
NA>>Как прекратить выборку данных?

А>Use the Cancel method to terminate execution of an asynchronous method call (that is, a method invoked with the adAsyncConnect, adAsyncExecute, or adAsyncFetch option).

А>MSDN

А>На Delphi выглядит примерно так:

А>
А>AdoQuery1.Recordset.Cancel;
А>


А не лучше ли сделать два запроса:
1 выбираем первые, например 100, записей
SELECT ... TOP 100
2 запускаем одновременно с первым на выборку всех записей.
SELECT * ...

Начинаем работать пока с первым запросом, а когда обработается второй,
переключимся на него
ICQ #311116826
Re[3]: Как прекратить асинхронную выборку данных...
От: Алекс Россия http://wise-orm.com
Дата: 21.06.02 07:40
Оценка:
Здравствуйте Максим Алексейкин, Вы писали:

МА>Здравствуйте Алекс, Вы писали:


А>>Здравствуйте nikulin_ann, Вы писали:


[skipped]

МА>А не лучше ли сделать два запроса:

МА>
МА>1 выбираем первые, например 100, записей
МА>SELECT ... TOP 100
МА>2 запускаем одновременно с первым на выборку всех записей.
МА>SELECT * ...

МА>Начинаем работать пока с первым запросом, а когда обработается второй,
МА>переключимся на него
МА>


А зачем так извращаться? Можно FetchProgress ловить.
Re[4]: Как прекратить асинхронную выборку данных...
От: Максим Алексейкин Россия  
Дата: 21.06.02 10:30
Оценка:
Здравствуйте Алекс, Вы писали:

А>Здравствуйте Максим Алексейкин, Вы писали:


МА>>Здравствуйте Алекс, Вы писали:


А>>>Здравствуйте nikulin_ann, Вы писали:


А>[skipped]


МА>>А не лучше ли сделать два запроса:

МА>>
МА>>1 выбираем первые, например 100, записей
МА>>SELECT ... TOP 100
МА>>2 запускаем одновременно с первым на выборку всех записей.
МА>>SELECT * ...

МА>>Начинаем работать пока с первым запросом, а когда обработается второй,
МА>>переключимся на него
МА>>


А>А зачем так извращаться? Можно FetchProgress ловить.


Интересно. Раскажи по подробнее:

' значит запускаем запрос на исполнение
RS.Open ...

' ловим событие
Sub On_FetchProgress ...
'
' И как мне тут воспользоваться уже полученными записями?
'
End Sub
ICQ #311116826
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.