Удаление записей в БД

Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду

Ответить
Pepper
Сообщения: 33
Зарегистрирован: 21 фев 2004, 23:50
Откуда: Мурманск
Контактная информация:

15 июн 2004, 20:04

У меня два вопроса:
1. Подскажите как очистить БД?
2. И как можно удалить только диапазон каких-нибудь записей?

Заранее благодарен.
Аватара пользователя
AiK
Сообщения: 2274
Зарегистрирован: 13 фев 2004, 18:14
Откуда: СПб
Контактная информация:

15 июн 2004, 21:54

Pepper, а ты точно уверен, что вопросы по Паскалю? :)
Даже самый дурацкий замысел можно воплотить мастерски
GOS
Сообщения: 111
Зарегистрирован: 17 фев 2004, 10:32
Контактная информация:

15 июн 2004, 22:00

Перец :) уточни вопрос :)
Pepper
Сообщения: 33
Зарегистрирован: 21 фев 2004, 23:50
Откуда: Мурманск
Контактная информация:

15 июн 2004, 22:26

AiK, по базам данных, но не в разздел SQL с этим вопросом идти :) ... я без него хочу :)
GOS, уточняю:
Как для набора данных Table удалить:
1) все записи;
2) только несколько, например, диапазон.
Аватара пользователя
Naeel Maqsudov
Сообщения: 2551
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

16 июн 2004, 00:23

но не в разздел 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.
Pepper
Сообщения: 33
Зарегистрирован: 21 фев 2004, 23:50
Откуда: Мурманск
Контактная информация:

16 июн 2004, 00:46

Все работает, спасибо...
потом может попробую и с помощью SQL
Pepper
Сообщения: 33
Зарегистрирован: 21 фев 2004, 23:50
Откуда: Мурманск
Контактная информация:

16 июн 2004, 14:28

Я что-то опять накосячил!
Удаление диапазона, удаление одной записи работает, а вот EmptyTable не работает! Выдает сообщение что-то типа 'Table busy' или как-то так... подскажите как быть.
GOS
Сообщения: 111
Зарегистрирован: 17 фев 2004, 10:32
Контактная информация:

16 июн 2004, 22:29

Подскажу :)

Надо получить эксклюзивный доступ
т.е.
DM.Table.Active:=false;
DM.Table.Exclusive:=true;
DM.Table.EmptyTable;

а чтобы получить такой доступ набор данных не должен(помоему) быть открыт текущим или другим процессом!

Удачи :)
Pepper
Сообщения: 33
Зарегистрирован: 21 фев 2004, 23:50
Откуда: Мурманск
Контактная информация:

16 июн 2004, 23:30

GOS, спасиба, я именно так и сделал :)
Ответить