![]() |
Compactar Base d Datos Access desde Delphi.
Hola compañeros programadores, ahora les tengo otra consulta; cómo puedo compactar una base d datos en Access desde Delphi, existe algún procedimiento sencillo para eso? Gracias d antemano.
|
a riesgo de equivocarme no creo que se pueda hacer mediante consultas, parece más sencillo hacer un objeto OLE que realize tal operacion
|
Cita:
|
Este método esta muy bien...
// Compilado en Delphi 7 com Access 2000
// agrega en USES comobj,variants 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; // llama esta funcion asi: CompactDataBaseDao('datos.mdb'); |
una consulta....
estoy utilizando ese mismo código en Delphi 6 y el 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???? gracias. |
Prueba este
|
Cita:
muchas gracias por la respuesta... |
La franja horaria es GMT +2. Ahora son las 07:46:04. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi