Главная страница
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.033 c
1-1189981681
Nick-A
2007-09-17 02:28
2007.12.09
Продолжение работы проги при смене usera


15-1194694215
Evanescence
2007-11-10 14:30
2007.12.09
Как составить техническое задание


8-1170734577
avprohorov
2007-02-06 07:02
2007.12.09
как перерисовать только Image


2-1195133837
unnamed
2007-11-15 16:37
2007.12.09
TIdUDPServer и TIdUDPClient: проблема!(не знаю как её обозвать)


15-1194950345
novill
2007-11-13 13:39
2007.12.09
Подскажите бесплатную(шароварную) программу типа Service Desk