powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Выполнение ADOQuery параллельно основному процессу
12 сообщений из 12, страница 1 из 1
Выполнение ADOQuery параллельно основному процессу
    #37981745
Freeze729
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день.

Подскажите, желательно примером - как процесс выполнения запроса пустить в параллель с основным процессом, чтобы не зависало на время выполнения и можно было второй(3...4...) запрос выполнить. По форуму не нашел.
Так понимаю, нужно с потоками работать? Ну и отмену выполнения запроса хотелось бы сделать, в случае, если задача отпала.

Каждый запрос открывается в MDIChild. Соответственно пока выполняется, вешает все.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
if (ADOConnection2->Connected==true)
{
  ADOQuery3->Close();
  if (RichEdit_copy(this)==0)
  {
    ADOQuery3->SQL->Text=RichEdit3->Text;
    try
   {
     ADOQuery3->Open(); //висяк
   }
   catch  (EOleException &e)
   {
    ShowMessage("Ошибка выполнения SQL: "+e.Message);
   }
  }
}
...
Рейтинг: 0 / 0
Выполнение ADOQuery параллельно основному процессу
    #37981871
m_Sla
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Windows, Builder?

О потоках читай Джеффри РИХТЕР "Создание эффективных WIN32-приложений с учетом специфики 64-разрядной версии Windows".
Потом в справке Buildera читай о TThread.
...
Рейтинг: 0 / 0
Выполнение ADOQuery параллельно основному процессу
    #37981899
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Freeze729По форуму не нашел.
А заглянуть в документацию и найти там ExecuteOptions с его eoAsyncExecute помешало что?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Выполнение ADOQuery параллельно основному процессу
    #37981982
Freeze729
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Windows 7, RadXE2, Oracle 10.

Помешало незнание что искать. Сейчас буду шатать темы. Спасибо.
...
Рейтинг: 0 / 0
Выполнение ADOQuery параллельно основному процессу
    #37981999
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Freeze729Помешало незнание что искать.
Именно поэтому начинающие обязательно должны прочитать документацию целиком.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Выполнение ADOQuery параллельно основному процессу
    #37982022
Freeze729
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не обнаруживаю для себя глубокое чтение эффективным.
Инструменты забываются. Помнятся только верхушки и то с чем работал в последнее время.
Не отправляйте только на тренировку памяти. И так как жучок верчусь.
Книгу Рихтера скачал, прочту.
...
Рейтинг: 0 / 0
Выполнение ADOQuery параллельно основному процессу
    #37982132
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Freeze729Помнятся только верхушки и то с чем работал в последнее время.
Ну так а откуда взяться в памяти этим верхушкам, если их не прочтёшь?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Выполнение ADOQuery параллельно основному процессу
    #37982329
Freeze729
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Получается читать документацию.
Поставил асинхронку, рефрешу данные в гриде, все норм, выполняет один запрос, а при попытке выполнить другой, пишет, что ADOQUERY: Field 'DUMMY' not found. Опять собака. Сам очищать он не хочет видимо.
...
Рейтинг: 0 / 0
Выполнение ADOQuery параллельно основному процессу
    #37982502
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Freeze729Получается читать документацию.
Поставил асинхронку, рефрешу данные в гриде, все норм, выполняет один запрос, а при попытке выполнить другой, пишет, что ADOQUERY: Field 'DUMMY' not found. Опять собака. Сам очищать он не хочет видимо.А кто тебе сказал что это так легко? :)
У тебя в игре три отдельных сущности: твоя программа, интерфейсный драйвер доступа к базе и коннект к серверу базы данных.

Чтобы в принципе можно было делать асинхронные запросы тебе нужно уметь либо в твоей программе работать с потоками, либо чтобы интерфейсный драйвер умел делать асинхронные запросы (в этом случае сам драйвер запустит запрос в отдельном потоке).

Чтобы можно было делать два (или больше) одновременных запроса к базе - надо делать несколько одновременных коннектов к серверу. Ты не можешь сделать два запроса одновременно в одном коннекте. А после того как ты сделал несколько коннектов, то либо через каждый из них запускаешь запрос в асинхронном режиме а потом сидишь и проверяешь какой из них уже отработал а какой нет, либо делаешь несколько потоков самостоятельно и тогда уже "главный" поток будет заниматься синхронизацией получения данных от детей.
...
Рейтинг: 0 / 0
Выполнение ADOQuery параллельно основному процессу
    #37983463
Freeze729
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо за наводку..

С потоками получилось. Через виртуальные окна, очень даже шоколадно. Ниче не тормозит, параллельно запросы работают, ниче не вешается.

Единственный баг остался, при закрытие уже самой программы выходит ошибка EOSError 'System Error. Code:1400. Недопустимый дескриптор окна'.
...
Рейтинг: 0 / 0
Выполнение ADOQuery параллельно основному процессу
    #37983499
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Freeze729Спасибо за наводку..

С потоками получилось. Через виртуальные окна, очень даже шоколадно. Ниче не тормозит, параллельно запросы работают, ниче не вешается.

Единственный баг остался, при закрытие уже самой программы выходит ошибка EOSError 'System Error. Code:1400. Недопустимый дескриптор окна'.
Не пребывай в сладкой неге слишком долго. Учитывая твой почти нулевой опыт работы с потоками я гарантирую
тебе с вероятностью 99% что у тебя "утекают" ресурсы. Перед тем как сдавать работу заказчику убедись
что ты не флудишь системными объектами и всё корректно закрывешь. И не тогда когда в таск менеджере
всё убито а когда приходит правильное событие (закрытие формы например).
...
Рейтинг: 0 / 0
Выполнение ADOQuery параллельно основному процессу
    #37983518
Freeze729
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С потоками может быть такое, эт да)) До этого задачи в хвост друг другу дышали.
Ну ниче, растем.
С ошибкой разобрался. При выполнении запроса в потоке, еще давал выход на экран самописному ShowMessage, который убегает рандомом до края экрана по наведению мыши, чтобы пользователя не угнетать кнопко-нажимательством. Вот он то и не объявлен.
Если че, еще мысли будут, что нужно предусмотреть, то пишите, я читаю - прислушиваюсь. з.ы. Только особо не трольте, в ассемблер не полезу.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Выполнение ADOQuery параллельно основному процессу
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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