powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / ODAC OraQuery и Progressbar
6 сообщений из 6, страница 1 из 1
ODAC OraQuery и Progressbar
    #39461418
oraqp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
День добрый! Прошу помощи, может кто имел дело с компонентами ODAC!?
Delphi XE3, ODAC 9.0.1, БД Oracle 11.2.
Есть следующий код, по нажатию на кнопку.
Код: pascal
1.
2.
3.
4.
5.
oraq.ReadOnly := True;
oraq.FetchAll := True;
oraq.Sql.Text := 'select ...';
oraq.Execute;
...


* oraq - компонента TOraQuery
Запрос возвращает ~50-100 тыс.строк, выполняется секунд ~10-15.
1. Во время выполнения запроса, приложение "намертво" зависает/блокируется. Возможно ли, каким образом, обойти данную ситуацию?
2. Как отобразить время выполнения запроса на индикации процесса (Progressbar)?
События похожего (на progress) я у компонента не нашёл. Есть After/Before Fetch, OnCalcFilelds..
Возможно ли с помощью этих событий отобразить процесс?
...
Рейтинг: 0 / 0
ODAC OraQuery и Progressbar
    #39461424
Фотография JayDi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
15 секунд -- это еще норма, для такого времени прогресс-бар не обязателен. Можно просто ограничиться курсором-загрузкой.

Код: pascal
1.
2.
3.
4.
5.
6.
Screen.Cursor := crHourGlass;
try
  // загрузка
finally
  Screen.Cursor := crDefault;
end;
...
Рейтинг: 0 / 0
ODAC OraQuery и Progressbar
    #39461432
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Такая "проблема", а точнее фича есть в любых компонентах.
Для решения нужно делать запрос в другом потоке. А в главном потоке отображать в ГУИ и можно делать ч-л еще.
И то сам прогресс выполнения хх% получить не удастся.
И параллельное обращение к БД тоже придется делать в новом коннекшене, т.к. основной будет занят сабжем.
...
Рейтинг: 0 / 0
ODAC OraQuery и Progressbar
    #39461448
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
LSVТакая "проблема", а точнее фича есть в любых компонентах.
Для решения нужно делать запрос в другом потоке. А в главном потоке отображать в ГУИ и можно делать ч-л еще.
И то сам прогресс выполнения хх% получить не удастся.
И параллельное обращение к БД тоже придется делать в новом коннекшене, т.к. основной будет занят сабжем.

В DOA есть фича, можно показывать процесс фетча записей на клиента,
а в ODAC чего-то не припомню, никогда не требовалось
...
Рейтинг: 0 / 0
ODAC OraQuery и Progressbar
    #39461492
oraqp,

Как вариант, можно перед запросом, в отдельном потоке запустить бесконечную анимацию и после окончания фетча всех записей остановить ее.
...
Рейтинг: 0 / 0
ODAC OraQuery и Progressbar
    #39461512
oraqp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Отдельный поток для меня не вариант. Ограничимся пока курсором/текстом. Благодарю за ответы!
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / ODAC OraQuery и Progressbar
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]