Форум: "Базы";
Текущий архив: 2003.06.19;
Скачать: [xml.tar.bz2];
ВнизПрерывание выполнения запроса. Найти похожие ветки
← →
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 вся ветка
Форум: "Базы";
Текущий архив: 2003.06.19;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.008 c