Форум: "Базы";
Текущий архив: 2003.05.01;
Скачать: [xml.tar.bz2];
ВнизКак сделать чтобы программа ждала пока выполнится запрос? Найти похожие ветки
← →
Брат (2003-04-11 15:45) [0]Вот я выполняю запрос через IBQuery. Сразу после IBQuery1.Active:=true у меня стоят операторы которые должны выполнится после того, как выполнится запрос.
Как сделать чтобы программа ждала пока выполнится запрос?
Надеюсь моёй вопрос понятен... ;)
← →
Жук (2003-04-11 15:59) [1]А она, гадина, не ждёт ? :-)
Тогда можно цикл поставить :
while not IBQuery1.Active do ....
:-)))
← →
Соловьев (2003-04-11 16:05) [2]
> Надеюсь моёй вопрос понятен... ;)
не-а :)))))
← →
SergeyNew (2003-04-11 16:06) [3]Тупой способ, но работает. Надо просто после Active:=True перейти на последнюю запись в возвращаемом наборе данных, т.е.
IBQuery1.Active:=True;
IBQuery1.Last;
← →
samalex (2003-04-11 16:08) [4]Я думаю, он хочет долждаться момента, когда запрос возвратит полную выборку данных.
FetchAll.
← →
Max Zyuzin (2003-04-11 16:10) [5]>Брат © (11.04.03 15:45)
Ну вы блин даете... а что она делает по твоему??? Они и ждет... или скажи конкретнее что хочешь...
← →
Брат (2003-04-11 16:44) [6]Через IBQuery я выполняю оператор DELETE FROM...
Сразу после этого мне нужно выполнить хранимую процедуру, которая обновляет полученную после IBQuery таблицу...
но выполнение не выполняется, так как таблица оказывается занятой...
Прилагаю участок кода:
...
IBQuery2.Active:=true;
IBStoredProc1.ExecProc;
...
Нужно между этими оператора что-то вставить, чтобы хранимая процедура не выполнялась пока, не выполнится удаление из таблицы...Вот такая вот проблема.
← →
NickBat (2003-04-11 16:57) [7]А так?
IBQuery2. ExecSQL;
IBStoredProc1.ExecProc;
← →
Жук (2003-04-11 16:58) [8]:-))) Идея :
a:=false;
;-)))
IBQuery3:=TIBQuery.Create(Self);
IBQuery2.Active:=true;
while not a do
begin
IBQuery3.SQL.Clear;
IBQuery3.SQL.Add("select те записи, которые должны быть удалены");
IBQuery3.Open;
if IBQuery3.RecordCount<1 then a:=true;
IBQuery3.Close;
end;
IBQuery3.Free;
IBStoredProc1.ExecProc;
← →
Sergey Masloff (2003-04-11 17:33) [9]Ребят, да вы что... Вся VCL выполняется в одном потоке, пока Query.Open() не сделалось никуда управление дальше не идет. Или Query в отдельной Thread выполняется? Тогда синхронизировать надо.
← →
NickBat (2003-04-11 17:50) [10]Запросы вида delete запускать на выполнение не Open, а Exec.
← →
Sergey Masloff (2003-04-11 18:07) [11]NickBat © (11.04.03 17:50)
>Запросы вида delete запускать на выполнение не Open, а Exec.
ну это понятно...
← →
NickBat (2003-04-11 18:08) [12]Тебе может и понятно, а автор ветки писал:
IBQuery1.Active:=True;
IBQuery1.Last;
← →
Anatoly Podgoretsky (2003-04-11 18:18) [13]А чего гадать?
Ну не хочет он показывать тексты запросов, видимо так оно ему нужно.
← →
NickBat (2003-04-11 18:36) [14]> Ну не хочет он показывать тексты запросов, видимо так оно ему нужно.
Ну почему же. :))
Автор ветки писал:
> Брат © (11.04.03 16:44)
> Через IBQuery я выполняю оператор DELETE FROM...
...
> IBQuery2.Active:=true;
Откуда совет: делай ExecSQl
Хотя, судя по отсутствию автора ветки, у него все давно получилось. А мы тут копья ломаем :))
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.05.01;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.007 c