Вниз
Скачать: CL | DM;

Прерывание выполнения запроса.   Найти похожие ветки 

 
KDS ©   (2003-05-27 14:21) [0]

Если запрос к БД выполняется очень долго и пользователю надоело ожидать результат возможно ли прервать его выполнение (допустим, по нажатию кн. "Прервать")? И как это реализовать программно?
Или же: как можно контролировать ход его выполнения визуально, используя нечто вроде "TProgressBar"?

P.S. FireBird=IB6.х, компоненты IBObjects.
Заранее благодарен.
Димыч.


 
Johnmen ©   (2003-05-27 14:47) [1]

1. Прервать на клиенте или выполнение запроса сервером ?
2. Полноценно и корректно прогрессбаром нельзя.


 
KDS ©   (2003-05-27 14:58) [2]

>Johnmen
1. так как это было бы корректно и по отношению к программе и к серверу. Не знаю, поэтому и спрашЫваю.
Юзер нажал кн."Прервать" и продолжает работу в программе дальше. Зачем же сервачку пыхтеть зря над выполнением уже ненужного задания?


 
Johnmen ©   (2003-05-27 15:26) [3]

Как минимум, придется заводить еше один поток, в смысле "нить"...
В котором выполнять запрос, а в основном асинхронно прибивать этот поток. Но при этом сервер будет продолжать выполнение запроса. Но и это можно обойти, но способ слишком "искусственен"...


 
Digitman ©   (2003-05-27 15:26) [4]


> KDS


зайди ibase.ru, там есть статьи на эту тему с примерами

концептуально это выглядит так :

"тяжелый" запрос выносится в ХП (например, в цикл for select .. where УСЛОВИЯ_ОТБОРА do.. suspend) и УСЛОВИЯ_ОТБОРА дополняются еще и условием проверки значения специально создаваемого для этой цели генератора

на кл.стороне организуется доп.код.потока, задача которого - при необходимости прервать исполнение "тяжелого" запроса изменить значение спецгенератора по команде юзера

перед стартом "тяжелого" запроса спецгенератору задается, например, начальное значение 0 (при таком значении "спецусловие" = TRUE).
когда необходимо прервать "тяжелый" запрос, доп.кодовый поток изменяет значение спецгенератора с 0 на 1, "спецусловие" становится = FALSE, и запрос, проверяющий его для каждой обрабатываемой записи, автоматически и корректно прерывается



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.018 c
1-60186
Fantasy
2003-06-05 05:59
2003.06.19
Timer


1-60266
vlad1972
2003-06-06 10:23
2003.06.19
Быстрое создание отчетов


3-60046
merlot
2003-05-28 09:06
2003.06.19
Сортировка в DBGrid-е


6-60293
Rule
2003-04-10 19:31
2003.06.19
Необходимо эмулировать отправку информации с формы на вебсайте


14-60316
Intell
2003-06-01 16:41
2003.06.19
У кого-нибудь есть учебники по работе с CD-ROM`ом?




   Наверх