PDA

Ver la Versión Completa : Compactar y Reparar Base de Datos en Access


dec
29-06-2006, 23:25:19
Para compactar una Base de Datos en Access:


var Dir: string; // contiene el directorio
// en dónde se encuentra el fichero de datos

function GetEngine(var DbEngine: Variant): Boolean;
begin
Result := False;
try
DbEngine := CreateOleObject('Dao.DbEngine.35'); // Para Access'97
except
try
DbEngine := CreateOleObject('Dao.DbEngine.36'); // Para Access 2000
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;

function CompactDataBaseDao(DbAccessName: String): Boolean;
var
DbEngine: Variant;
TmpFile: String;
begin
Result := False;
if Dir = '' then Exit;

TmpFile := Dir + '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;

darkone2k4
09-12-2009, 16:07:14
gracias x el código, muy bueno.

el único problema que tengo es que una vez realizado el proceso de compactar me da el siguiente error:

Exception EOleException in module Captura.exe at 000A1C48.
Error de autenticación.

Alguien sabe a qué se debe????