![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как сделать чтобы программа ждала пока выполнится запрос? [D6, IB6.x]
Брат © (2003-04-11 15:45:00)Вот я выполняю запрос через IBQuery. Сразу после IBQuery1.Active:=true у меня стоят операторы которые должны выполнится после того, как выполнится запрос.
Как сделать чтобы программа ждала пока выполнится запрос?
Надеюсь моёй вопрос понятен... ;)
NickBat (2003-04-11 18:36:00) [1]> Ну не хочет он показывать тексты запросов, видимо так оно ему нужно.
Ну почему же. :))
Автор ветки писал:
> Брат © (11.04.03 16:44)
> Через IBQuery я выполняю оператор DELETE FROM...
...
> IBQuery2.Active:=true;
Откуда совет: делай ExecSQl
Хотя, судя по отсутствию автора ветки, у него все давно получилось. А мы тут копья ломаем :))
Anatoly Podgoretsky (2003-04-11 18:18:00) [2]А чего гадать?
Ну не хочет он показывать тексты запросов, видимо так оно ему нужно.
NickBat (2003-04-11 18:08:00) [3]Тебе может и понятно, а автор ветки писал:
IBQuery1.Active:=True;
IBQuery1.Last;
Sergey Masloff (2003-04-11 18:07:00) [4]NickBat © (11.04.03 17:50)
>Запросы вида delete запускать на выполнение не Open, а Exec.
ну это понятно...
NickBat (2003-04-11 17:50:00) [5]Запросы вида deleteзапускать на выполнение не Open, а Exec.
Sergey Masloff (2003-04-11 17:33:00) [6]Ребят, да вы что... Вся VCL выполняется в одном потоке, пока Query.Open() не сделалось никуда управление дальше не идет. Или Query в отдельной Thread выполняется? Тогда синхронизировать надо.
Жук (2003-04-11 16:58:00) [7]:-))) Идея :
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;
NickBat (2003-04-11 16:57:00) [8]А так?
IBQuery2. ExecSQL;
IBStoredProc1.ExecProc;
Брат (2003-04-11 16:44:00) [9]Через IBQuery я выполняю оператор DELETE FROM...
Сразу после этого мне нужно выполнить хранимую процедуру, которая обновляет полученную после IBQuery таблицу...
но выполнение не выполняется, так как таблица оказывается занятой...
Прилагаю участок кода:
...
IBQuery2.Active:=true;
IBStoredProc1.ExecProc;
...
Нужно между этими оператора что-то вставить, чтобы хранимая процедура не выполнялась пока, не выполнится удаление из таблицы...Вот такая вот проблема.
Max Zyuzin (2003-04-11 16:10:00) [10]>Брат © (11.04.03 15:45)
Ну вы блин даете... а что она делает по твоему??? Они и ждет... или скажи конкретнее что хочешь...
samalex (2003-04-11 16:08:00) [11]Я думаю, он хочет долждаться момента, когда запрос возвратит полную выборку данных.
FetchAll.
SergeyNew (2003-04-11 16:06:00) [12]Тупой способ, но работает. Надо просто после Active:=True перейти на последнюю запись в возвращаемом наборе данных, т.е.
IBQuery1.Active:=True;
IBQuery1.Last;
Соловьев (2003-04-11 16:05:00) [13]
> Надеюсь моёй вопрос понятен... ;)
не-а :)))))
Жук (2003-04-11 15:59:00) [14]А она, гадина, не ждёт ? :-)
Тогда можно цикл поставить :
while not IBQuery1.Active do ....:-)))