Удаление записей в БД
Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду
У меня два вопроса:
1. Подскажите как очистить БД?
2. И как можно удалить только диапазон каких-нибудь записей?
Заранее благодарен.
1. Подскажите как очистить БД?
2. И как можно удалить только диапазон каких-нибудь записей?
Заранее благодарен.
Pepper, а ты точно уверен, что вопросы по Паскалю? 

Даже самый дурацкий замысел можно воплотить мастерски
Перец
уточни вопрос 


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


GOS, уточняю:
Как для набора данных Table удалить:
1) все записи;
2) только несколько, например, диапазон.
- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
А напрасно. Это было бы правильнее.но не в разздел SQL с этим вопросом идти... я без него хочу
![]()
1) Database1.Execute('delete from tablename');
2) Database1.Execute('delete from tablename where <условия, задающие диапазон удаляемых данных>');
Можно, конечно и так.Как для набора данных Table удалить:
1)
Код: Выделить всё
with Table do begin
Active := False;
EmptyTable;
end;
Пробежать по диапазону записей делая Table.Delete. Только надо учесть, что Table.Delete перемещает табличный курсор к следующей записи, так что после Delete не надо делять Table.Next
И все же гораздо правильней быстрее и надежнее выполнить для этих целей SQL оператор DELETE.
Все работает, спасибо...
потом может попробую и с помощью SQL
потом может попробую и с помощью SQL
Я что-то опять накосячил!
Удаление диапазона, удаление одной записи работает, а вот EmptyTable не работает! Выдает сообщение что-то типа 'Table busy' или как-то так... подскажите как быть.
Удаление диапазона, удаление одной записи работает, а вот EmptyTable не работает! Выдает сообщение что-то типа 'Table busy' или как-то так... подскажите как быть.
Подскажу 
Надо получить эксклюзивный доступ
т.е.
DM.Table.Active:=false;
DM.Table.Exclusive:=true;
DM.Table.EmptyTable;
а чтобы получить такой доступ набор данных не должен(помоему) быть открыт текущим или другим процессом!
Удачи

Надо получить эксклюзивный доступ
т.е.
DM.Table.Active:=false;
DM.Table.Exclusive:=true;
DM.Table.EmptyTable;
а чтобы получить такой доступ набор данных не должен(помоему) быть открыт текущим или другим процессом!
Удачи

GOS, спасиба, я именно так и сделал 
