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

Вниз

Как удалить все записи из таблицы   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.008 c
14-10008
Tot
2002-06-04 13:16
2002.07.04
D5 -> D6, D6 -> D5 ???


3-9704
Solod
2002-05-31 10:30
2002.07.04
Проблема с фильтрацией TTable.


3-9716
mrgrin
2002-06-10 18:29
2002.07.04
Как задать жесткий путь к базе для всех компонентов?


14-9979
ZIP
2002-06-02 19:49
2002.07.04
После установки модема виснет комп


3-9751
VAleksey
2002-06-11 09:24
2002.07.04
Paradox - каскадные удаления.