Страница 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, спасиба, я именно так и сделал :)