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

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

Выполнение ADOQuery и продолжение работы приложения.


Сергей Ю ©   (2007-04-27 14:31:00) 

Делается sql-запрос к базе. Минут 5 делается, надо чтоб в эти 5 минут программа продолжала работать а не ждала пока придет ответ. Как можно сделать?


stone   (2007-04-28 11:40:00) [1]


> > > AsyncFetch
> > > AsyncFetchNonBlocking
>
> А какая между ними разница?

F1

> > нужно будет отлавливать OnFetchCompite и уже там делать:
>
> >  a:=Query1.Fields[0].AsInteger
>
> Т.е. всетаки так надо делать?

угу


Сергей Ю.   (2007-04-28 10:28:00) [2]


> > AsyncFetch
> > AsyncFetchNonBlocking

А какая между ними разница?


> нужно будет отлавливать OnFetchCompite и уже там делать:
>  a:=Query1.Fields[0].AsInteger

Т.е. всетаки так надо делать?


stone   (2007-04-28 10:17:00) [3]


> Сергей Ю.   (28.04.07 10:09) [9]
> И все таки что выбрать и как работать потом?


> AsyncFetch
> AsyncFetchNonBlocking

в зависимости от условий.

> a:=Query1.Fields[0].AsInteger;
> То тут она переменную "a" незаполнит

Если еще ни одна запись на клиента не пришла, то конечно не заполнит. Да и какой смысл заполнять переменную случайным значением?


Сергей Ю.   (2007-04-28 10:09:00) [4]

И все таки что выбрать и как работать потом?


MsGuns   (2007-04-27 22:00:00) [5]

1. У асинхроноого ражима есть некоторые минусы.
2. Для полного избежания "тормозов" просто Async не всегда помогает - TThread надежней ;)


Сергей Ю.   (2007-04-27 20:48:00) [6]

Я так понимаю что это ExecuteOption. А что выставить? Тут:
AsyncExecute
AsyncFetch
AsyncFetchNonBlocking
ExecuteNoRecords

И я так понимаю что если сейчас процедура выглядит как:
 Query1.SQL.Add('...');
 Query1.Open;
 a:=Query1.Fields[0].AsInteger;
То тут она переменную "a" незаполнит, а нужно будет отлавливать OnFetchCompite и уже там делать: a:=Query1.Fields[0].AsInteger;
Так?


stone   (2007-04-27 19:40:00) [7]

в ADOQuery


Сергей Ю.   (2007-04-27 19:33:00) [8]

А асинхронный режим надо включить на ADOConnection и/или ADOQuery???


stone   (2007-04-27 17:17:00) [9]


> Сергей Ю.   (27.04.07 17:14) [3]

У АДО-компонентов есть асинхронный режим работы. Вот его и используй.


Сергей Ю.   (2007-04-27 17:14:00) [10]

Ну подробности и правда не нужны :)
Например чтоб пользователь мог кнопки пока потыкать :)


zdm   (2007-04-27 15:06:00) [11]

не вдаваясь в подробности не понятной логики... запустить его в отдельном потоке.


iXT   (2007-04-27 14:57:00) [12]

А чего она должна делать? Что означает
> программа продолжала работать а не ждала пока придет ответ


Наверх

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