powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Можно ли прервать выполнение запроса в программе?
12 сообщений из 12, страница 1 из 1
Можно ли прервать выполнение запроса в программе?
    #32343530
Sergundi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Запускается запрос (неважно к какой базе, к примеру Oracle), и оказывается, что время его выполнения очень большое. Можно ли сделать так, чтобы конечный юзверь мог прервать выполнение запроса без аварийного завершения программы?
...
Рейтинг: 0 / 0
Можно ли прервать выполнение запроса в программе?
    #32343541
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, если выполнять запрос ассинхронно или в отдельном треде.
...
Рейтинг: 0 / 0
Можно ли прервать выполнение запроса в программе?
    #32344291
Фотография eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
[не одобрен]
>> Можно ли сделать так, чтобы конечный юзверь мог прервать выполнение запроса без аварийного завершения программы?

Как уже ответили: в отдельном потоке.
Только все равно придется дождаться окончания запроса, иначе после закрытия программы вывалится ексепшн.
Есть готовый компонент для DOA: CanceledQuery называется, кажется. Он в сырцах, можешь поискать его и посмотреть как это реализовано.




eNose
...
Рейтинг: 0 / 0
Можно ли прервать выполнение запроса в программе?
    #32344292
Sergundi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, про thread я как-то не подумал... А вот про асинхронное выполнение нигде даже не слышал. Если можно, объясните в двух словах или ссылочку?
...
Рейтинг: 0 / 0
Можно ли прервать выполнение запроса в программе?
    #32344299
Sergundi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
>> Есть готовый компонент для DOA: CanceledQuery называется, кажется

Ничего похожего в исходниках не нашел. Уменя DOA v3.43
...
Рейтинг: 0 / 0
Можно ли прервать выполнение запроса в программе?
    #32344374
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЕсли можно, объясните в двух словах или ссылочку?

В справке по MDAC есть про ассинхронный режим работы. Да и в хелпе в Delphi есть немного в разделе про адошные компоненты.
...
Рейтинг: 0 / 0
Можно ли прервать выполнение запроса в программе?
    #32344380
srf2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>> Есть готовый компонент для DOA: CanceledQuery называется, кажется
Ничего похожего в исходниках не нашел. Уменя DOA v3.43

смотри тут:
http://www.farpost.com/personal/dmitryb/
...
Рейтинг: 0 / 0
Можно ли прервать выполнение запроса в программе?
    #32344507
GoIV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Судя по поставленной задаче можно не заморачиваться отдельными потоками, а просто перед исполнением запроса поставить Application.ProcessMessage. В этом случае Делфи сама выделит поток на исполнение запроса, а юзверь может, пока запрос выполняется заниматься своими делами. Ну и для пущей красявости навесить некоторое следилово за состоянием процесса, например в процентах выполнения.
...
Рейтинг: 0 / 0
Можно ли прервать выполнение запроса в программе?
    #32344531
Berg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2GolV:
> а просто перед исполнением запроса поставить Application.ProcessMessage. В > этом случае Делфи сама выделит поток на исполнение запроса
Это как???
Имхо "ProcessMessages cycles the Windows message loop until it is empty, and then returns control to the application" и не более того...
...
Рейтинг: 0 / 0
Можно ли прервать выполнение запроса в программе?
    #32344535
srf2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 GoIV : ты бред-то не неси...
...
Рейтинг: 0 / 0
Можно ли прервать выполнение запроса в программе?
    #32345494
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Асинхронные запросы хорошо подходят, если клиенту не возвращаются данные. Ежели ему что-то должно придти, то GoIV не совсем бред несет. Без Application.ProcessMessage не обойтись.

Нужно создать для требуемого запроса отдельный коннект и по нажатию чего-то делать:

ADOConnectionMy.Connected:=false
...
Рейтинг: 0 / 0
Можно ли прервать выполнение запроса в программе?
    #32345909
StarWind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2
он (GoIV) несет бред в любом случае, потому как вопрос стоит в выполнении запроса, а единственное что можно сделать при помощи Application.ProcessMessage (в данном контексте) это организовать красивый fetch большого числа записей
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Можно ли прервать выполнение запроса в программе?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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