Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
14-60339
Udjin
2003-05-31 00:18
2003.06.19
13 билет на экзамене


1-60239
killer
2003-06-05 15:34
2003.06.19
Можно ли в ListBox-е слева от строк добавлять изображения?


1-60243
Mazer
2003-06-04 22:32
2003.06.19
Ошибка при работе с Word ом из DLL...


1-60106
Тукрин
2003-06-04 17:54
2003.06.19
Как обратится к protected методу компоненты?


14-60318
Soft
2003-06-02 20:54
2003.06.19
Linux: истоки новой философии программирования





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский