Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.05.01;
Скачать: 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 вся ветка

Текущий архив: 2003.05.01;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.011 c
7-815
Valek
2003-03-13 05:44
2003.05.01
Сканер штрих-кодов IT3800pdf-12


7-807
cybermonk
2003-03-06 10:15
2003.05.01
Низкоуровневая запись-чтение с дискеты


14-779
Giemgo
2003-04-14 23:32
2003.05.01
Вашингтонский снайпер


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


3-372
dim
2003-04-11 10:30
2003.05.01
DBCtrlGrid + DBText