![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
"Упаковка" таблицы [D6, dBase, FoxPro]
Artem03 © (2004-05-07 14:50:00)Подскажите команду для "упаковки" (ФИЗИЧЕСКОГО удаления помеченных как "удаленные" записей) таблицы. 5 лет тому назад я ей пользовался. Сейчас опять возникла необходимость.
Спасибо.
Pul (2004-05-07 16:59:00) [1]procedure PackTable(Table: TTable);
var
Props: CURProps;
hDb: hDBIDb;
TableDesc: CRTblDesc;
begin
if not Table.Active then
begin
Application.MessageBox(PChar('Table Must Be Opened For Pack'),
PChar('Error'), MB_ICONERROR);
Exit;
end;
if not Table.Exclusive then
begin
Application.MessageBox(PChar('Table Must Be Opened Exclusive Mode'),
PChar('Error'), MB_ICONERROR);
Exit;
end;
Check(DbiGetCursorProps(Table.Handle, Props));
if Props.szTableType = szPARADOX then
begin
FillChar(TableDesc, sizeof(TableDesc), 0);
Check(DbiGetObjFromObj(hDBIObj(Table.Handle),
objDATABASE, hDBIObj(hDb)));
StrPCopy(TableDesc.szTblName, Table.TableName);
StrPCopy(TableDesc.szTblType, Props.szTableType);
TableDesc.bPack := True;
Table.Close;
Check(DbiDoRestructure(hDb, 1, @TableDesc, nil, nil, nil, False));
Table.Open;
end
else
if Props.szTableType = szDBASE then
begin
{ Table.Close;}
Check(DbiPackTable(Table.DBHandle, Table.Handle, nil, szDBASE, True));
{ Table.Open;}
end
else
begin
Application.MessageBox(PChar('Table Not Paradox Or DBase'),
PChar('Error'), MB_ICONERROR);
Exit;
end;
end;
sniknik (2004-05-07 14:58:00) [2]PACK TABLE Table1 (если поддерживается тем что используеш)
DbiPackTable (если используеш то о чем не сказал)