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