FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Compactar y reparar BD Access
Buenasss, como estan todos...
Tengo una consulta de relativa urgencia, necesito compactar y reparar una base de datos Access desde Delphi, Como podria hacerlo? Supongo que debe existir alguna unit de objetos OLE o algun componente, les agradecería que me ayuden o me orienten como encarar el problema.- Saludos desde Argentina Perio |
#2
|
||||
|
||||
Intenta a ver con este
Alguien me envió este código y la verdad no se si funcione.
Intenta funcionar con este a ver. Debes poner JRO_TLB en el uses. Código:
procedure TfMainForm.P_CompactarClick(Sender:TObject); var JE : TJetEngine; //Jet Engine sdbTemp : WideString; //TEMP database sdbName : WideString; const SProvider = 'Provider=Microsoft.Jet.OLEDB.4.0;DataSource='; begin inherited; DBM.ADOConnection.Close; sdbName := g_sAppPath + g_sPrograma + '.mdb'; sdbTemp := g_sAppPath + 'TEMP_' + g_sPrograma +'.mdb'; if FileExists(sdbTemp) then DeleteFile(sdbTemp); JE := TJetEngine.Create(Application); try try JE.CompactDatabase(SProvider + sdbName, SProvider + sdbtemp); DeleteFile(sdbName); RenameFile(sdbTemp, sdbName); except on E:Exception do ShowMessage(E.Message); end; finally JE.FreeOnRelease; ShowMessage('Proceso terminado.'); Close; end; end;
__________________
Cielos azules |
#3
|
|||
|
|||
sigo sin compactar....
Hola Alexander, muchas gracias por tu pronta respuesta, pero sigo con inconvenientes para hacer funcionar el código.
En la linea siguiente del codigo que me pasaste: JE.CompactDatabase(SProvider + sdbName, SProvider + sdbtemp); Me tira el error "No se pudo encontrar el archivo ISAM instalable".- No tengo idea que puede llegar a ser. Un saludazo desde Argentina.- Perio Última edición por Perio fecha: 11-07-2005 a las 17:07:37. |
#4
|
|||
|
|||
Guenasss, como andan todos... pude compcatar la puta base de datos y lo hice asiss:
Código:
//Agregar en la uses uses JRO_TLB; procedure TForm1.Button2Click(Sender: TObject); var JetEngine1 : TJetEngine; DBName: String; DataSource, DataDest, DataDestName, Source : String; begin DBName := 'C:\Eduardo_Vadalá_(no_borrar)\data_STT.mdb '; //Si no existe, corta el proceso if not FileExists(DBName) then begin Showmessage('Base de Datos no Encontrada'); Exit; end; //Ruta de base de datos temporal DataDestName := 'C:\WINDOWS\Temp\data_STT.mdb'; //Si existe lo borra if FileExists(DataDestName) then begin DeleteFile(DataDestName); Showmessage('Archivo no Encontrado'); end; DataSource :='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+DBName+';'; DataDest :='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+DataDestName+';'; dataDest := DataDest +'Jet OLEDB:Engine Type=5'; JetEngine1 := TJetEngine.Create(self); try JetEngine1.CompactDatabase(DataSource,DataDest); Showmessage('Base de Datos Compactada en: '+DataDestName); JetEngine1.Free; if DeleteFile(DBName) then begin if RenameFile(DataDestName,DBName) then Showmessage(DataDestName+ ' Renombrada a: ' +DBName) else Showmessage(DataDestName+ ' no Renombrada' +DBName); end else Showmessage('Error: '+DBName+',no pudo ser borrada'); except on E: Exception do Showmessage(E.Message); end; end; |
|
|
|