Текущий архив: 2007.05.20;
Скачать: CL | DM;
Вниз
Выполнение ADOQuery и продолжение работы приложения. Найти похожие ветки
← →
Сергей Ю (2007-04-27 14:31) [0]Делается sql-запрос к базе. Минут 5 делается, надо чтоб в эти 5 минут программа продолжала работать а не ждала пока придет ответ. Как можно сделать?
← →
iXT © (2007-04-27 14:57) [1]А чего она должна делать? Что означает
> программа продолжала работать а не ждала пока придет ответ
← →
zdm © (2007-04-27 15:06) [2]не вдаваясь в подробности не понятной логики... запустить его в отдельном потоке.
← →
Сергей Ю. (2007-04-27 17:14) [3]Ну подробности и правда не нужны :)
Например чтоб пользователь мог кнопки пока потыкать :)
← →
stone © (2007-04-27 17:17) [4]
> Сергей Ю. (27.04.07 17:14) [3]
У АДО-компонентов есть асинхронный режим работы. Вот его и используй.
← →
Сергей Ю. (2007-04-27 19:33) [5]А асинхронный режим надо включить на ADOConnection и/или ADOQuery???
← →
stone © (2007-04-27 19:40) [6]в ADOQuery
← →
Сергей Ю. (2007-04-27 20:48) [7]Я так понимаю что это ExecuteOption. А что выставить? Тут:
AsyncExecute
AsyncFetch
AsyncFetchNonBlocking
ExecuteNoRecords
И я так понимаю что если сейчас процедура выглядит как:
Query1.SQL.Add("...");
Query1.Open;
a:=Query1.Fields[0].AsInteger;
То тут она переменную "a" незаполнит, а нужно будет отлавливать OnFetchCompite и уже там делать: a:=Query1.Fields[0].AsInteger;
Так?
← →
MsGuns © (2007-04-27 22:00) [8]1. У асинхроноого ражима есть некоторые минусы.
2. Для полного избежания "тормозов" просто Async не всегда помогает - TThread надежней ;)
← →
Сергей Ю. (2007-04-28 10:09) [9]И все таки что выбрать и как работать потом?
← →
stone © (2007-04-28 10:17) [10]
> Сергей Ю. (28.04.07 10:09) [9]
> И все таки что выбрать и как работать потом?
> AsyncFetch
> AsyncFetchNonBlocking
в зависимости от условий.
> a:=Query1.Fields[0].AsInteger;
> То тут она переменную "a" незаполнит
Если еще ни одна запись на клиента не пришла, то конечно не заполнит. Да и какой смысл заполнять переменную случайным значением?
← →
Сергей Ю. (2007-04-28 10:28) [11]
> > AsyncFetch
> > AsyncFetchNonBlocking
А какая между ними разница?
> нужно будет отлавливать OnFetchCompite и уже там делать:
> a:=Query1.Fields[0].AsInteger
Т.е. всетаки так надо делать?
← →
stone © (2007-04-28 11:40) [12]
> > > AsyncFetch
> > > AsyncFetchNonBlocking
>
> А какая между ними разница?
F1
> > нужно будет отлавливать OnFetchCompite и уже там делать:
>
> > a:=Query1.Fields[0].AsInteger
>
> Т.е. всетаки так надо делать?
угу
Страницы: 1 вся ветка
Текущий архив: 2007.05.20;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.036 c