Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Очистить БД через запрос SQL


Василич ©   (2006-08-08 04:16:00) 

Салют!

Есть проблема - не могу очистить все значения БД (MS ACCESS) через запрос SQL...
пробовал делать так:

 DM1.ADOQuery1.SQL.Strings[0]:='Delete * from table1';

Delphi говорит, что объект не может выполнить требуемую операцию, но при повторном пуске БД девственно чиста...

поможите...


Василич   (2006-08-09 07:59:00) [1]

тьфу!
сорри!
канешна ORMADA!
блин как будто вчера школу закончил...


ORMADA   (2006-08-09 07:42:00) [2]

блин!
Василич!
не путай тут!
ARMADA<>ORMADA!


Василич   (2006-08-09 05:36:00) [3]

разобрался я с DML (lol!), также разобрался с методом open и ExecSQl, благо книги всё таки есть под рукой...

большой респект MsGuns и ARMADA за столь содержательный ответ!!!

2Плохиш: а обижаться тут можно только на меня, за такие пионерские вопросы =8)))


ORMADA   (2006-08-08 12:09:00) [4]

2 Василич
очень рекомендую тебе всё таки узнать что такое DML(в каждой книжке по скулю есть)
вот это перести не смог ?
Call ExecSQL to execute the SQL statement currently assigned to the SQL property. Use ExecSQL to execute queries that do not return a cursor to data (such as INSERT, UPDATE, DELETE, and CREATE TABLE).

Note: For SELECT statements, call Open instead of ExecSQL or set the Active property to true

если после прочтения этого ты ещё не понял почему у тебя вся прога работает через Open а этот скуль нет
без обид кипу хорошую книжку по скулю
и по дельфи тож
рекомендоую по дельфм Маркко Кэнту(знающие люди подтвердят)
потрать сейчас немного денег и времени на изучение вышеописанного чтобы потом быстрее всё раврабатывать и избежать многих ошибок
удачи :)


Плохиш   (2006-08-08 12:01:00) [5]


> Василич ©   (08.08.06 11:53) [4]
> может быть это и ламо, но все SQL запросы работают, кроме
> этого

Документацию/справку читать не пробовали, вместо того, чтобы обижаться на правильные рекомендации?


stone   (2006-08-08 11:55:00) [6]


>  DM1.ADOQuery1.Active:=True;

Будет ругаться потому, что после выполнения команды не возвращается recordset.
PS. и звездочку из текста запроса убери


Василич   (2006-08-08 11:53:00) [7]

вот листинг процедуры:


procedure TForm1.N8Click(Sender: TObject);
begin
       DM1.Datasource1.Dataset:=DM1.ADOQuery1;
       DM1.ADOQuery1.Active:=False;
       DM1.ADOQuery1.SQL.Strings[0]:='Delete * from table1';
       DM1.ADOQuery1.Active:=True;
       Form1.DBGrid1.DataSource:=DM1.DataSource1;
end;


2ARMADA:
что такое DML операторы я не знаю...
все запросы в разрабатываемой программе работают и без ADOQuery1.ExecSql, а по вышепреведённому способу...

может быть это и ламо, но все SQL запросы работают, кроме этого...


MsGuns   (2006-08-08 09:16:00) [8]

DM1.ADOQuery1.SQL.Text:='Delete from table1';
DM1.ADOQuery1.ExecSQL;

table1 должна быть закрытой.


TButton   (2006-08-08 08:33:00) [9]

я чистил через TRUNCATE TABLE `имя_таблицы`
правда это в MySQL)


ORMADA   (2006-08-08 07:11:00) [10]

DML операторы следует выполнять не через ADOQuery1.Open
а через ADOQuery1.ExecSql

Description

Call ExecSQL to execute the SQL statement currently assigned to the SQL property. Use ExecSQL to execute queries that do not return a cursor to data (such as INSERT, UPDATE, DELETE, and CREATE TABLE).

ExecSQL returns an integer value reflecting the number of rows affected by the executed SQL statement.

Note: For SELECT statements, call Open instead of ExecSQL or set the Active property to true


Наверх

Титульная страница Поиск, карта сайта Написать письмо