Форум: "Базы";
Текущий архив: 2002.07.04;
Скачать: [xml.tar.bz2];
ВнизКак удалить все записи из таблицы Найти похожие ветки
← →
maxim2 (2002-06-11 11:01) [0]Привет всем!
Пишу так Form1.table1.emptytable а он выдает ошибку типа
Table cannot be opened for exlusive use.
Что делать?
← →
Johnmen (2002-06-11 11:04) [1]Открыть ея эксклюзивно :)
← →
maxim2 (2002-06-11 11:08) [2]А как ?
← →
Johnmen (2002-06-11 11:18) [3]...
Table1.Exclusive:=True;
Table1.Open;
Table1.EmptyTable;
...
← →
maxim2 (2002-06-11 11:46) [4]А теперь пишет
Cannot perform this operation on an open dataset
← →
Johnmen (2002-06-11 11:51) [5]Ну да...НД д.б.закрыт :))))
А ты глянь примерчик то в хелпе, если не влом....
← →
Kurmanbek (2002-06-11 15:19) [6]Этот метод неприменим для открытого набора данных.
Закрой таблицу перед вызовом метода
для твоего примера:
Form1.Table1.Close;
Form1.Table1.Exclusive:=true;
Form1.Table1.EmtyTable;
Form1.Table1.Exclusive:=false;
← →
sizmrebi (2002-06-11 17:25) [7]mojno i s pomoshiu query:
Delete from <imia tablici>
← →
Val (2002-06-11 17:36) [8]>sizmrebi © (11.06.02 17:25)
зачем создавать для этого еще и квери, если метода TTable, который, судя по вопросу, использует автор, вполне достаточно?
← →
sizmrebi (2002-06-12 08:26) [9]prosto pokazal eshio odin put ochistki table,kotorii rabotaet chisto
← →
Илья Б. (2002-06-12 19:04) [10]Работает точно:
While not Table1.Eof Do
Begin
Table1.Edit;
Table1.Delete;
Table1.Post;
Table1.Next;
End;
правда долго...
← →
Voland_s (2002-06-12 19:48) [11]Delete from Table1
и все будет работать точно
только придется создать Query и вызвать метод query.ExecSql;
потому что если удалять построчно 100000 записей можно оч. долго ждать
← →
Val (2002-06-13 10:36) [12]>Илья Б. (12.06.02 19:04)
правда долго...
Потому что отсутствует понимание происходящего. Зачем, например, выполнять Table1.Edit; и Table1.Post; ???
← →
Johnmen (2002-06-13 10:40) [13]Да и зачем вообще все это понаписано, если автору надо реально удалять все записи, а не просто помечать их как удаленные...
← →
Sokol (2002-06-13 12:31) [14]А еще лучше создать Stored Proc и вызвать ее через TStoredProc...;)
Жадность программиста - Select * from *
Расточительность программиста - Delete from *
← →
Johnmen (2002-06-13 12:33) [15]>Sokol © (13.06.02 12:31)
>А еще лучше создать Stored Proc и вызвать ее через
>TStoredProc...;)
Ага, в Paradox"е :)))))))))
← →
Гюли (2002-06-13 13:09) [16]Насколько я знаю, метод Empty для TTable работает гораздо быстрее, чем запрос на удаление всех записей в таблице (я имею в виду таблицы парадокс в частности). Дело в том, что в этом случае происходит что-то вроде того, что удаляется данная таблица и создаётся новая такая же, но пустая, а как раз для этого и нужен монопольный доступ. Может быть и не удаляется таблица, а просто изменяется информация в заголовке о количестве записей в таблице и изменяется размер файла таблицы, ну и соответственно и с индексами происходят соответствующие преобразования. Для выполнения этого метода в BDE есть специальная функция.
← →
Vladislav (2002-06-13 13:12) [17]Что тут мудрить.
Если неохота использовать запросы, то
While not Table1.Eof Do Table1.Delete;
Хотя, я бы использовал бы запрос.
← →
Гюли (2002-06-13 13:32) [18]>Если неохота использовать запросы, то
>While not Table1.Eof Do Table1.Delete;
to Vladislav
Дело в том, что этот способ удаляет записи из таблицы последовательно и время опустошения таблицы прямопропорционально количеству записей в таблице. Далее, размер таблицы не уменьшается, а остаётся тем же. Поэтому самый лучший способ, если нужно просто опустошить таблицу именно метод Empty класса TTable. После выполнения этого метода получается новенькая, абсолютно идентичная, пустая табличка. Единственное ограничение в этом методе - это необходимость эксклюзивного доступа к этой таблице.
← →
Val (2002-06-13 13:35) [19]Пошел флейм :)
← →
Johnmen (2002-06-13 13:38) [20]>Val © : Вот-вот !!! К тому же отягощенный нежеланием читать предыдущие посты....
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.07.04;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.006 c