Вниз
Скачать: CL | DM;

Как сделать чтобы программа ждала пока выполнится запрос?   Найти похожие ветки 

← →
Брат ©   (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 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.009 c
1-623
anbezr
2003-04-19 10:56
2003.05.01
Параметр для TypeInfo


3-389
Diogen
2003-04-15 09:43
2003.05.01
like в FB


3-446
ArtemB
2003-04-14 08:42
2003.05.01
Сортировка таблицы


1-544
Airdriver
2003-04-21 11:56
2003.05.01
обработка события компнентов созданных в Реальном времени


1-558
Barlok
2003-04-17 18:43
2003.05.01
Вопрос по массивам?




   Наверх