FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
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.
|
#2
|
||||
|
||||
a riesgo de equivocarme no creo que se pueda hacer mediante consultas, parece más sencillo hacer un objeto OLE que realize tal operacion
__________________
self.free; |
#4
|
|||
|
|||
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'); |
#5
|
|||
|
|||
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. |
#6
|
||||
|
||||
Prueba este
|
#7
|
|||
|
|||
Cita:
muchas gracias por la respuesta... |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Como crear una base de datos desde Access... | JF Sebastian | Conexión con bases de datos | 5 | 29-03-2007 18:14:22 |
Compactar base de Datos Interbase | Isnel | Firebird e Interbase | 4 | 02-11-2006 18:15:42 |
Compactar Base de Datos Paradox | jdangosto | Conexión con bases de datos | 3 | 02-08-2005 18:34:57 |
Compactar Base de Datos | Milu | Firebird e Interbase | 2 | 03-09-2004 21:12:48 |
|