Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.09.18;
Скачать: [xml.tar.bz2];

Вниз

Вопрос по 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.01 c
3-58571
Dynamit
2003-08-27 11:48
2003.09.18
Очень быстро заканчивается память!!!!


3-58586
napil
2003-08-25 20:07
2003.09.18
dbf


9-58501
Juster~
2003-03-05 18:45
2003.09.18
Рендеринг планет


3-58567
Jet
2003-08-28 22:49
2003.09.18
Скопировать записи из MSSQLServer в таблицу DBF


6-58801
DimaS
2003-07-17 13:43
2003.09.18
Как узнать текущую скорость соединения с инетом?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский