Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Можна ли одним махом обрезать полтаблицы? [D7, Paradox]


Gost ©   (2005-02-17 12:35:00) 

Есть таблица Парадокс, где 100 тыс записей. Не спрашивайте зачем, но надо удалить 50 тыс. записей. Но быстро, не проганяя через цикл. Что-то типа указать номер первой и последней удаляемой записи - и удалить их.


msguns   (2005-02-18 10:36:00) [1]

>ЮЮ ©   (18.02.05 04:05) [10]

Имелось в виду, нафига такая таблица проге? Типа мавр свое дело сделал, а там хоть закапывайте Дездемону, а хоть кремируйте,- ему лично она больше не нужна ;)


ЮЮ   (2005-02-18 04:05:00) [2]

>Free;  // На фиг такая порезанная табла ;))

Ты лишь убъешь объект TTable, а на диске этот уродец останется.
Тогда уж,  

EmptyTable; //коль пошла такая пьянка - режь последний огурец :)


msguns   (2005-02-17 14:50:00) [3]

> не используя SQL (я с ним не работаю). Но если Вам не трудно, напишите пример. Буду очень благодарен.

var
 QDel: integer;
with Table do
 begin
  Open;
  FetchAll;
  QDel := (RecordCount div 2);
  First;
  while QDel>0 then
    begin
     Delete;
     Dec(QDel);
    end;
  Close;
  Free;  // На фиг такая порезанная табла ;))
 end;


Sergey13   (2005-02-17 14:41:00) [4]

2 [5] msguns ©   (17.02.05 14:19)
>Ага, этот запрос "нарулит"
Какие проблемы? Для подобного вопроса нормальный запрос в ответ ИМХО. 8-)

>И, кстати, Серег, ты из Космоса узнал, что в этой таблице есть автоинкремент ?
Дык у меня с космосом прямая связь. 8-)
Я ж написал "Вроде того, типа"


DSKalugin   (2005-02-17 14:33:00) [5]

если использовать номера записи то так

Table.Filter:='(id>0) and (id<50000)';
Table.Filtered:=True;
Table.First;
while not Table.EOF do Table.Delete;
Table.Filtered:=False;


DSKalugin   (2005-02-17 14:29:00) [6]

программ Западло;
вар и: интежер;
бегин
 фор и:=1 то 50000 до Таблэ.Дэлэтэ;
энд.


msguns   (2005-02-17 14:19:00) [7]

>Sergey13 ©   (17.02.05 12:38) [1]
>SQL рулит
>Вроде того, типа
>Delete from table where id>50000 and id<100000

Ага, этот запрос "нарулит"

И, кстати, Серег, ты из Космоса узнал, что в этой таблице есть автоинкремент ?


Плохиш   (2005-02-17 13:03:00) [8]


>Gost   (17.02.05 12:45) [3]
>если можна, то не используя SQL

Тогда, только медленно и проганяя через цикл.

А с учётом ограничений в [0] и [3], задача не имеет решения.


Gost   (2005-02-17 12:45:00) [9]

если можна, то не используя SQL (я с ним не работаю). Но если Вам не трудно, напишите пример. Буду очень благодарен.


Max Zyuzin   (2005-02-17 12:39:00) [10]

>Gost   (17.02.05 12:35)
SQL запросом?


Sergey13   (2005-02-17 12:38:00) [11]

SQL рулит
Вроде того, типа
Delete from table where id>50000 and id<100000


Наверх

Титульная страница Поиск, карта сайта Написать письмо