Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.05.12;
Скачать: [xml.tar.bz2];

Вниз

как срубить SQL запрос   Найти похожие ветки 

 
DoPIk   (2003-04-22 12:35) [0]

Запускаю запрос в отдельном потоке. Как его можно коректно снять


 
Fiend   (2003-04-22 13:38) [1]

Тут знаешь ли палка о нескольких концах.
1. Не все СУБД поддерживают оатсновку выполняющегося запроса.
2. Если у тебя всё же та что поддерживает, то корректность зависит от метода доступа к ней.

Ты уж потрудись, напиши нам, какая СУБД и как ты к ней обращаешься


 
DoPIk   (2003-04-22 14:06) [2]

Oracle8
Доступ через TDatabase и TQuery
формирую Query.SQL
Создаю поток SQLThread:= TSQLThread.Create("");
В потоке практически одна команда Query1.Open.

SQLThread.terminate не подходит, так как обработчик просто некуда вставлять.
пытался отключать Database,query, освобождать SQLThread - прога виснет, что-то вроде "доступ запрещен".


 
Fiend   (2003-04-22 14:25) [3]

Ну тогда вопрос решаем достаточно просто.
Раз уже сделан отдельный поток для выполнения запроса, то надо тогда использовать возможности БДЕ. Он вызывает зарегистрированный коллбэк через некоторый промежуток времени. Если функция вернула cbrAbort/ то БДЕ шлёт серверу комманду что надо бі остановить віполнение, и он останавливает.
Тока вот там еще надо какой то параметр установить то ли у алиаса то ли у драйвера.

CancelCallBack: TBDECallBack;

function TDataModule3.CancelCallBackFunction(cbInfo : Pointer): CBRType;
begin
//это будет вызываться через время
if StopGenerating then Result:=cbrAbort;
end;

//это где нибудь перед началом запроса
CancelCallBack:=TBDECallBack.Create(Session,nil,cbCANCELQRY,nil,0,CancelCallBackFunction,true);//Регистрирование функции обратного вызова

ну а это уже в OnTerminate потока поставишь.
if CancelCallBack<>nil then CancelCallBack.Free;//Удаление функции обратного вызова


 
Fiend   (2003-04-22 14:28) [4]

во нашёл.
To use the asynchronous query submission API, add 2048 to the current value of DRIVER FLAGS or set it to 2048 if it"s blank.
у драйвера установите параметр энтот


 
DoPIk   (2003-04-22 14:49) [5]

спасибо, попробую



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

Форум: "Базы";
Текущий архив: 2003.05.12;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.006 c
11-34384
not
2002-08-08 06:05
2003.05.12
аналог TStringGrid в KOL


8-34520
ViRUS_1
2003-01-12 04:51
2003.05.12
Как узнать цвет пиксела на экране в определенных координатах?


14-34589
Mystic
2003-04-21 10:52
2003.05.12
Соревнование по программированию (Delphi)


7-34620
xtreme
2003-03-17 12:31
2003.05.12
Как определить сколько HDD в системе - IDE и сколько - SCSI ?


1-34403
Бедный
2003-04-29 18:58
2003.05.12
создание 500000 картинок..или взгляды психа на жизнь...





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский