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

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




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

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

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

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

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

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


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