Delphi - COMPACTAR BASES DE DATOS

 
Vista:

COMPACTAR BASES DE DATOS

Publicado por JUANA (5 intervenciones) el 09/05/2001 13:30:48
-¿EN DELPHI SE PUEDEN COMPACTAR BASES DE DATOS DE ACCESS?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:COMPACTAR BASES DE DATOS

Publicado por Sebastian (17 intervenciones) el 09/05/2001 22:38:24
Yo no se... je...
:o)

suerte...
y Feliz Próximo día de las mamacitas...

Saludos... Daniel_26
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:COMPACTAR BASES DE DATOS

Publicado por Bleach (63 intervenciones) el 10/05/2001 14:35:13

Para compactar una base de datos puedes utilizar estas funciones, las he sacado del club Delphi

La primera obtiene el objeto com del dbengine:

function GetEngine(var DbEngine: Variant): Boolean;
begin
Result := False;
try
DbEngine := CreateOleObject('Dao.DbEngine.35');
except
try
DbEngine := CreateOleObject('Dao.DbEngine');
except
ShowMessage('No es posible inicializar el DAO.'#13 +
'Microsoft DAO debe de estar instalado en este equipo.'#13 +
'Para instalarlo, debes saber que forma parte de '+
'MS Access, Visual Basic, MS Office, etc.');
Exit;
end;
end;
Result := VarType(DbEngine) = VarDispatch;
end;

La segunda lo compacta:

function CompactDataBaseDao(DbAccessName: String): Boolean;
var
DbEngine: Variant;
TmpFile: String;
begin
Result := False;

TmpFile := 'TmpAccess.Mdb';
if Pos( '.MDB', UpperCase(DbAccessName)) = 0 then
DbAccessName := DbAccessName + '.MDB';

if not FileExists(DbAccessName) then Exit;

try
if not GetEngine(DbEngine) then Exit;
if FileExists(TmpFile) then
DeleteFile(TmpFile);
// Antes de compactar la Base de Datos, ésta se repara.
DbEngine.CompactDataBase(DbAccessName, TmpFile);
DeleteFile(DbAccessName);
RenameFile(TmpFile, DbAccessName);
// En caso de caida del sistema aquí, tendremos la base compactada en TmpFile.
Result := True;
except
Exit;
end;
end;

Espero te sirva, aunque veo que has intentado esto por otros metodos con igual fortuna.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar