![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Очистить БД через запрос 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