Lenguaje de programación Borland Delphi
Para compactar las tablas paradox (quitar definitivamente los registros marcados como eliminados); en el USES del formulario o unidad donde insertemos la función declararemos las unidades: DB, BDE, DBTables, la función es la siguiente:
procedure Compactar (const ADatabase, ATable:String);
var
ADB:TDataBase;
SaveKC:Boolean;
PdxStruct: CRTblDesc;
begin
with TTable.Create(nil) do
try
DataBaseName:=ADataBase;
TableName:=ATable;
Exclusive:=True;
Open;
ADB:=DataBase;
SaveKC:=ADB.KeepConnection;
ADB.KeepConnection:=True;
try
Close;
FillChar(PdxStruct,SizeOf(PdxStruct),0);
StrPCopy(PdxStruct.szTblName,ATable);
PdxStruct.bPack:=True;
Check(DbiDoRestructure(ADB.Handle,1,@PdxStruct,nil,nil,nil,False));
finally
ADB.KeepConnection:=SaveKC;
end;
finally
Free;
end;
end;
Para utilizarla, pondremos un botón en un formulario y en el evento click del mismo añadiremos:
procedure TForm1.Button1Click(Sender: TObject);
begin
Compactar ('NombreAlias', 'nombreTabla.db');
end;
NOTA: en 'NombreAlias' podemos poner directamente la ruta donde se encuentre la tabla a compactar.
Publicado el: 2003-09-17