Programación General > Delphi
Compactar Base De Datos
(1/1)
dyanna:
Hola!!!
Ahora me enfrento con algo nuevo...
El sistema que estoy desarrollando trabaja con tablas que se crean en tiempo de ejecucion, pero resulta que las tablas tienen muchisimos registros asi que el tamaño de la Base de datos se crece mucho...
Lo que quiero hacer es tener en mi sistema la misma utilidad que tiene Access de Compactar la Base de Datos..
En la pagina de Trucomania esta la manera de compactar tablas, pero yo necesito compartar la Base de Datos completa...
Alguien sabe como hacerlo?????
Gracias...
dyanna:
Ya lo pude hacer.. :)
Saludos..
tigreton:
Dyanna, tengo el mismo problema que tu con la base de datos. Necesito compactarla. Por favor puedes indicarme como lo hago.
Gracias
bartolomeo:
--- Código: Text ---procedure TForm1.CompactaMDB(Sender: TObject);var db: OleVariant;PathDb: string;beginPathDb := 'C:\Prueba Compactar BBDD\Datos.mdb';db := GetADOObject('JRO.JetEngine');db.CompactDatabase('Provider=Microsoft.Jet.OLEDB.4.0;' +'Data Source=' + PathDb + ';Jet OLEDBatabase Password="";','Provider=Microsoft.Jet.OLEDB.4.0;' +'Data Source=' + ExtractFilePath(PathDb) + 'Datos_new.mdb' +';Jet OLEDB:Database Password=""' +';Jet OLEDB:Engine Type=5'); // 4 se for Access 97if not DeleteFile(PathDb) then// file://Borrar bd antiguabeginShowMessage('Ocurrienron errores renombrando los archivos temporales!'+ #13 + 'La operacion fue cancelada.');DeleteFile(ExtractFilePath(PathDb) + 'nuevabd.mdb');// file://Borrar archivos temporalesexit;end;RenameFile(ExtractFilePath(PathDb) + 'nuevaBD.mdb', PathDb);//file://Renombra la bd compactadaDeleteFile(ExtractFilePath(PathDb) + 'nuevabd.mdb');//file://Borrar archivos temporales//*** Renombrar de nuevo la BD y ponerle el nombre original ***\\RenameFile(ExtractFilePath(PathDb) + 'Datos_new.mdb', ExtractFilePath(PathDb) + 'Datos.mdb');ShowMessage('Proceso Concluído con exito!');{excepton e: Exception doShowMessage(E.Message);endfinallydb := unassigned;// file://Limpia variables de objetosend;}end;function TForm1.GetADOObject(ADOClass: string): OLEVariant;var o: OLEVariant;begintryo := CreateOLEObject(ADOClass);except on EOleException doo := unassignedend;Result := o;end; procedure TForm1.Button1Click(Sender: TObject);beginMi_conexion.Connected := false; //AdoConectionMi_Conexion.Close;AdoTable1.Close;CompactaMDB(sender); //llamamos al procedimientoMi_Conexion.Connected := true;Mi_Conexion.Open;AdoTable1.Open;end;
No lo he probado, miralo. :P
dyanna:
Visita esta pagina:
http://delphi.about.com/od/sqlservermsdeac...l/aa091801a.htm
De ahi obtuve la solucion,
Bye.
Navegación
Ir a la versión completa