Текущий архив: 2007.07.15;
Скачать: CL | DM;
Вниз
Выполнение запросов Oracle в отдельном процессе. Найти похожие ветки
← →
tytus © (2007-04-16 18:22) [0]Доброго дня мастера. Когда TOracleQuery или TOracleDataSet выполняют запрос, то окно формы на которой лежат сии компоненты нельзя ни перетащить ни нарисовать процесс выполнения (пусть даже символически). Можно ли запустить выполнение запросов в другом процессе, чтобы можно было рисовать процесс выполнения и двигать форму.
← →
Правильный Вася (2007-04-16 19:08) [1]можно
← →
Kolan © (2007-04-16 19:34) [2]> Можно ли запустить выполнение запросов в другом процессе,
>
А в отдельном потоке никак нельзя?
← →
Германн © (2007-04-17 00:51) [3]
> чтобы можно было рисовать процесс выполнения
Не факт, что такое возможно в принципе.
← →
Sam Stone © (2007-04-17 01:36) [4]TOracleQuery.Threaded + F1
← →
tytus © (2007-04-17 12:23) [5]>all
ругается : Query thread is still in progress
← →
Карелин Артем © (2007-04-17 14:40) [6]1) вывести в отдельном потоке на экран форму, на которой и будет рисоваться прогресс.
2) В событии OnFetch или подобном, которое возникает при считывании очередной записи, рисовать прогресс и делать Application.ProcessMessages
← →
ANB © (2007-04-17 16:30) [7]
> tytus © (16.04.07 18:22)
В отдельном потоке выполнять смысла нету. Да еще граблей соберешь немерянно. DOA и ODAC умеют выполнять запросы асинхронно. Главное потом - определить точно момент завершения выполнения.
← →
tytus © (2007-04-17 16:52) [8]>Карелин Артем © (17.04.07 14:40) [6]
А ежели данные не считываются, а
OracleQuery1.Sql.Add("begin execute .... end;");
Тогда как?
← →
ANB © (2007-04-17 18:29) [9]
> А ежели данные не считываются, а
> OracleQuery1.Sql.Add("begin execute .... end;");
> Тогда как?
1) OracleQuery1.Sql.Add("begin execute .... end;"); - вот так лучше не делать.
OracleQuery1.Sql.Text := "begin execute .... end;"; - так лучше.
2) На фетч лучше не зашиваться, т.к. собственно выполнение запроса может занять полчаса, а фетч редко тормозит (если ты тока не тянешь на клиента пару миллионов записей).
3) Чукча не читатель ? Асинхронку смотрел ? Там опциями включается а потом в основном же потоке можно циклом ждать, не забывая выдавать в нем sleep и ProcessMessages.
ЗЫ. DOA как и ODAC не очень хорошо работают в отдельном потоке.
← →
tytus © (2007-04-17 18:44) [10]>ANB © (17.04.07 18:29) [9]
ORA-24909 - CLient in process
или [5].
>можно циклом ждать - где?
← →
ANB © (2007-04-17 19:27) [11]
> - где?
Ну - можно свой класс-обертку написать и ждать в нем, можно после каждого Execute цикл сбацать - кому как нравиться.
> ORA-24909 - CLient in process
- эт ты чего делать пытался, огребая эту ошибку ? Судя по ней, сессия занята важным делом, а ты ее дергать пытаешься. Запусти еще одну и извращайся (отдельный поток для этого опять таки не нужен).
← →
Карелин Артем © (2007-04-18 08:48) [12]
> tytus © (17.04.07 16:52) [8]
Если пункт 2 неприемлем, смотри пункт 1
Страницы: 1 вся ветка
Текущий архив: 2007.07.15;
Скачать: CL | DM;
Память: 0.49 MB
Время: 0.013 c