Страница 1 из 1
Удаление записей в БД
Добавлено: 15 июн 2004, 20:04
Pepper
У меня два вопроса:
1. Подскажите как очистить БД?
2. И как можно удалить только диапазон каких-нибудь записей?
Заранее благодарен.
Добавлено: 15 июн 2004, 21:54
AiK
Pepper, а ты точно уверен, что вопросы по Паскалю?

Добавлено: 15 июн 2004, 22:00
GOS
Перец

уточни вопрос

Добавлено: 15 июн 2004, 22:26
Pepper
AiK, по базам данных, но не в разздел SQL с этим вопросом идти

... я без него хочу
GOS, уточняю:
Как для набора данных Table удалить:
1) все записи;
2) только несколько, например, диапазон.
Добавлено: 16 июн 2004, 00:23
Naeel Maqsudov
но не в разздел SQL с этим вопросом идти

... я без него хочу
А напрасно. Это было бы правильнее.
1) Database1.Execute('delete from tablename');
2) Database1.Execute('delete from tablename where <условия, задающие диапазон удаляемых данных>');
Как для набора данных Table удалить:
Можно, конечно и так.
1)
Код: Выделить всё
with Table do begin
Active := False;
EmptyTable;
end;
2)
Пробежать по диапазону записей делая Table.Delete. Только надо учесть, что Table.Delete перемещает табличный курсор к следующей записи, так что после Delete не надо делять Table.Next
И все же гораздо правильней быстрее и надежнее выполнить для этих целей SQL оператор DELETE.
Добавлено: 16 июн 2004, 00:46
Pepper
Все работает, спасибо...
потом может попробую и с помощью SQL
Добавлено: 16 июн 2004, 14:28
Pepper
Я что-то опять накосячил!
Удаление диапазона, удаление одной записи работает, а вот EmptyTable не работает! Выдает сообщение что-то типа 'Table busy' или как-то так... подскажите как быть.
Добавлено: 16 июн 2004, 22:29
GOS
Подскажу
Надо получить эксклюзивный доступ
т.е.
DM.Table.Active:=false;
DM.Table.Exclusive:=true;
DM.Table.EmptyTable;
а чтобы получить такой доступ набор данных не должен(помоему) быть открыт текущим или другим процессом!
Удачи

Добавлено: 16 июн 2004, 23:30
Pepper
GOS, спасиба, я именно так и сделал
