![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как отследить долгие команды? [D6, NT4]
shane54 © (2002-11-17 19:28:00)Чисто теоретически. Допустим у меня
Label1.Caption := "AAA";
работает очень долго. Можно ли этот процесс отследить поэтапно с целью допустим повесить на TrackBar?
Теперь практически. Дело в том, что у меня при работе с БД (Oracle9i если кому интересно) дико долго отрабатывает запрос. Но программно это выглядит как выполнение одной строчки
ADOQuery1.ExecSQL;
И при этом прога понятно дело подвисает.
У меня из идей - вывести в отдельный поток (нить) обработку запроса. Это решит хотя бы проблему зависания. Но вот с отслеживание процесса выполнения...
shane54 (2002-11-18 14:07:00) [1]2Asderg © (18.11.02 10:26)
Перерыл весь форум, нашел одну дискуссию, но там всё свелось к тому, что надо вешать фиктивный TrackBar для иллюзии работы...
Asderg (2002-11-18 10:26:00) [2]на таймер вешай.. :)
будет хоть фигня показываться, но прогрессбар бежать будет, а иллюзия создастся.
по-моему тут большая тема была, как угадать прогресс выполнения запроса...
shane54 (2002-11-18 10:18:00) [3]Идея то понятна, но... Мой долгий запрос выводит всего одно значение, т.е. фетчит (fetch) всего 1 раз, как раз тогда, когда запрос заканчивает свою работу...
asmith (2002-11-17 21:10:00) [4]Ну, если ADO, то можно обойтись и без Oracle (тем более, что тут я тебе ничего не подскажу, ибо юзал сею штуку примитивно - сделал базу, таблички, чего-то ввел, что-то прочитал - и не очень долго). Запускай ADOQuery в асинхронном режиме ( смотри ExecuteOption ) и напиши для нее обработчик события OnFetchProgress.
shane54 (2002-11-17 20:42:00) [5]Наконец-то кто-то живой нашелся :)
Исполняющая среда - ADO.
Хотелось бы поподробнее насчёт получения от Оракла этапов выполнения запроса...
asmith (2002-11-17 20:20:00) [6]Идея с потоком - правильная, долго выполняющийся SQL-запрос нужно выполнять асинхронно, например, в отдельном потоке. А вот с "отслеживанием" не все просто. Прежде всего это зависит от исполняющей среды (BDE, ADO, ...), а также от серверной платформы (есть такие, на которых это сделать невозможно, ИМНО на Oracle это сделать можно)