Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.09.18;
Скачать: CL | DM;

Вниз

Вопрос по ADOQuery...   Найти похожие ветки 

 
grusty   (2003-08-27 12:10) [0]

На форме 5 компонентов: ADOQuery, ADOScript, DataSource, Button и DBGrid, причем:
ADOQuery.SQL:="SELECT * from Spisok";
ADOScript.SQL:="DELETE from Spisok";
DataSource связан с ADOQuery и при открытии формы все записи отображаются в DBGrid.
Мне необходимо при нажатии на Button удалить все записи из базы. Выполняю следующую процедуру:

procedure TForm.ButtonClick(Sender: TObject);
begin
SQLScript.ExecStatement(1);
SQLScript.ExecSQL;
ADOQuery.Close;
ADOQuery.Open;
end;

По логике все должно быть замечательно, однако при первом нажатии на Button записи продолжают отображаться. При последующем нажатии на Button - все нормально. Такое чувство, что необходима какая-то пауза. Может я что-то неправильно делаю? ПОМОГИТЕ!


 
Fiend ©   (2003-08-27 12:26) [1]

так может надо закрыть и открыть ADOQuery после віполнения удаления? ;)


 
grusty ©   (2003-08-27 12:34) [2]

--> Fiend
А я что делаю... См. процедуру...


 
Vlad ©   (2003-08-27 12:36) [3]

>Fiend © (27.08.03 12:26) [1]
Query итак закрывается-открывается после удаления.
>grusty (27.08.03 12:10)
А что такое ADOScript, если не секрет ?
И еще. Кажется где-то Commit надо ставить... :)


 
ZS   (2003-08-27 12:41) [4]

Попробуй ADOQuery.Refresh


 
grusty ©   (2003-08-27 12:49) [5]

--> Vlad
vg2ADOSQLScript (vgLib);

--> ZS
Возникает ошибка...


 
Fiend ©   (2003-08-27 12:50) [6]

То grusty
сорри, как фсегда недочитал до конца.
Действительно хто такой этот ADOScript?
Да и еще можно оттрассировать запросы к серверу, дабы убедиться что тот самый скрипт выполняется.


 
grusty ©   (2003-08-27 12:54) [7]

А вот так работает:

procedure TForm.ButtonClick(Sender: TObject);
begin
with ADOQuery do begin
Close;
SQL:="DELETE from Spisok";
ExecSQL;
SQL:="SELECT * from Spisok";
Open;
end;
end;

Идиотизм какой-то...


 
Fiend ©   (2003-08-27 12:58) [8]

То grusty:
никакого идиотизма!
Ты просто доверился сторонней библиотеке vgLib, а теперь пожинаешь плоды.


 
grusty ©   (2003-08-27 13:02) [9]

-->Fiend
Ничего подобного. Если вместо SQLScript использовать второй ADOQuery, то результат тот же...


 
Vlad ©   (2003-08-27 13:10) [10]

А если так ?

procedure TForm.ButtonClick(Sender: TObject);
begin
ADOConnection.BeginTrans;
SQLScript.ExecStatement(1);
SQLScript.ExecSQL;
ADOConnection.CommitTrans;
ADOQuery.Close;
ADOQuery.Open;
end;


 
grusty ©   (2003-08-27 13:43) [11]

Абсолютно идентичный результат. Никакой разницы.
Вот если после SQLScript.ExecSQL поставить паузу около 5 сек., тогда все нормально. Что это за задержка?
Еще пол дня, и я перейду на BDE...


 
SiJack ©   (2003-08-27 13:54) [12]

Взято из работающей программы
ADODataSet.Close;
ADOExport.CommandText:="Delete * from TSTip";
ADOExport.Execute;
ADODataSet.Open;

Даже глазом не успеешь моргнуть :)


 
SiJack ©   (2003-08-27 14:01) [13]

ADOExport енто ADOCommand


 
grusty ©   (2003-08-27 14:23) [14]

Тот же результат, только компоненты разные...
Почему то именно запрос на удаление всех записей выполняется не менее чем 5 сек.


 
SiJack ©   (2003-08-27 14:25) [15]

>grusty ©
У меня все работает нормально без 5-и секунд


 
grusty ©   (2003-08-27 14:49) [16]

-->SiJack
Я сейчас сделал все, как у тебя. В базе 1 запись.
Ну хоть убей, но не менее чем за 5 сек. происходит удаление. Могу текст своей проги выслать. Вот пример №7 работает без проблем (см. выше).


 
Vlad ©   (2003-08-27 15:27) [17]

Сдается мне, тут все-таки какая-то путаница с транзакциями...
То бишь судя по характеру проблемы, каждый Query делает запрос в отдельной транзакции, и первый - не успевает закончить ее, а второй уже делает SELECT


 
grusty ©   (2003-08-27 19:29) [18]

Ну наконец-то, разобрался...
Оказывается нужно было на форму добавить ADOConnection...
Спасибо всем, в частности -->Vlad!



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

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

Наверх




Память: 0.5 MB
Время: 0.026 c
3-58575
Relaxxx
2003-08-26 14:58
2003.09.18
Попуп меню в ДБГриде


14-58834
Knight
2003-08-31 22:49
2003.09.18
Просто пара вопросов... чё-то в голову стукнуло :)


14-58857
Pindos
2003-08-30 20:17
2003.09.18
У меня на компе обнаружен Троян!!!


4-58978
Serhio
2003-07-18 16:14
2003.09.18
Консольные проги


7-58927
MakNik
2003-07-07 11:02
2003.09.18
sheduler