Текущий архив: 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