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

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

Как отследить долгие команды? [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 это сделать можно)


Наверх

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