Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
1-9855
nitro313
2002-06-21 14:53
2002.07.04
Как объединить компоненты...


1-9795
Still Swamp
2002-06-20 20:24
2002.07.04
Packages


7-10027
der
2002-04-10 11:33
2002.07.04
печать напрямую на LPT.


1-9801
ewsd
2002-06-22 09:40
2002.07.04
подчеркивание части строки в RichEdit


4-10068
anod
2002-05-03 18:31
2002.07.04
Отображение файлов





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский