Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.12.09;
Скачать: CL | DM;

Вниз

Проблема с очисткой таблицы   Найти похожие ветки 

 
HID ©   (2007-07-30 16:59) [0]

Есть таблица DBF. Мне нужно периодически удалять из нее все записи. Я это делаю запросом.

delete from table

все записи удаляются, только файл с каждым удалением весит все больше и больше. По ходу дела, записи удаляются только логически. Подскажите, пожалуйста, как мне физически очишать таблицу.


 
vtur ©   (2007-07-30 17:08) [1]

table.clear


 
Jeer ©   (2007-07-30 17:12) [2]

1.DbiPackTable(..) для paradox и dbase
Для fox может не пойти.
2. Если удаляются все записи, то проще грохнуть файл и заново пересоздать.


 
Anatoly Podgoretsky ©   (2007-07-30 19:20) [3]

для paradox функция DbiPackTable не применима, зато для dbase самое то. А с ФоксПро работать в режиме RW себе вредить. С ФоксПро надо работать через АДО


 
Desdechado ©   (2007-07-30 20:20) [4]

Хранить пустышку-болванку таблицы и класть ее поверх боевой при надобности.


 
MsGuns ©   (2007-07-31 08:11) [5]

>Desdechado ©   (30.07.07 20:20) [4]
>Хранить пустышку-болванку таблицы и класть ее поверх боевой при надобности.

Если еще все "пустышки" хранить в отдельной папке, то будет самое то


 
HID ©   (2007-07-31 08:50) [6]

Пустышками я как раз и пользуюсь, но это порнография. Все должно работать автоматом. Кстати, на счет пакования, я знаю, что с использованием TTable, пакование делается, а как на счет TQuery, я через него таблицу юзаю.


 
Sergey13 ©   (2007-07-31 09:18) [7]

> [6] HID ©   (31.07.07 08:50)

Пустышечный автомат ничуть не порнографичнее паковательного автомата. Намного более порнографично "периодически удалять из нее все записи".


 
ЮЮ ©   (2007-07-31 09:51) [8]

>а как на счет TQuery

тогда в другом TQuery последовательно выполнить запросы
DROP Table ...
CREATE Table ...

P.S. А данные не жалко?


 
Jeer ©   (2007-07-31 10:09) [9]

Если необходимо удалить все записи, то не стоит употреблять термин "упаковка" - эта операция используется, как правило, для сжатия таблицы при наличии удаленных записей.

Для удаления всех записей и сжатия таблицы:
 tb.EmptyTable; // вызывается dbiEmptyTable

Для Pdx упаковка может быть произведена через dbiDoRest*, а dbiPack, как верно заметил AP в [3], для Pdx не сработает.

procedure PackTable(PackDataSet: TDataSet);
var
 Props: CURProps;
 hDb: hDBIDb;
 TableDesc: CRTblDesc;
begin
 if (PackDataSet is TTable) then
 begin
   PackDataSet.Close;
   (PackDataSet as TTable).Exclusive := True;
   PackDataSet.Open
 end
 else exit;
 Check(DbiGetCursorProps((PackDataSet as TTable).Handle, Props));
 FillChar(TableDesc, sizeof(TableDesc), 0);
 Check(DbiGetObjFromObj(hDBIObj((PackDataSet as TTable).Handle), objDATABASE, hDBIObj(hDb)));
 StrPCopy(TableDesc.szTblName, (PackDataSet as TTable).TableName);
 StrPCopy(TableDesc.szTblType, Props.szTableType);
 TableDesc.bPack := True;
 PackDataSet.Close;
 Check(DbiDoRestructure(hDb, 1, @TableDesc, nil, nil, nil, False));
 (PackDataSet as TTable).Exclusive := False;
 PackDataSet.Open;
end;

//
PackTable(tbMy {TTable});


 
HID ©   (2007-07-31 11:20) [10]

Вобщем, сделал, как посоветовал ЮЮ
DROP Table ...
CREATE Table ...
остался доволен и не парюсь.
Спасибо всем, ребят.



Страницы: 1 вся ветка

Текущий архив: 2007.12.09;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.03 c
3-1180525450
jack128
2007-05-30 15:44
2007.12.09
Работа с FB из нескольких потоков


15-1194183933
xayam
2007-11-04 16:45
2007.12.09
приглашаю для тестирования поисковика


1-1189867818
andreil
2007-09-15 18:50
2007.12.09
Преобразовать строку в дробное число


2-1194874601
Alex'
2007-11-12 16:36
2007.12.09
Как получить имя вызываемого метода?


15-1194461905
vasIZmax
2007-11-07 21:58
2007.12.09
Взялись бы ли вы за проект, который просто обречен на провал&#133