SoloCodigo

Programación General => Delphi => Mensaje iniciado por: dyanna en Lunes 29 de Marzo de 2004, 17:07

Título: Compactar Base De Datos
Publicado por: dyanna en Lunes 29 de Marzo de 2004, 17:07
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...
Título: Re: Compactar Base De Datos
Publicado por: dyanna en Sábado 3 de Abril de 2004, 01:47
Ya lo pude hacer.. :)

Saludos..
Título: Re: Compactar Base De Datos
Publicado por: tigreton en Miércoles 5 de Octubre de 2005, 23:58
Dyanna, tengo el mismo problema que tu con la base de datos. Necesito compactarla. Por favor puedes indicarme como lo hago.


Gracias
Título: Re: Compactar Base De Datos
Publicado por: bartolomeo en Jueves 6 de Octubre de 2005, 00:12
Código: Text
  1. procedure TForm1.CompactaMDB(Sender: TObject);
  2. var db: OleVariant;
  3. PathDb: string;
  4. begin
  5. PathDb := 'C:\Prueba Compactar BBDD\Datos.mdb';
  6. db := GetADOObject('JRO.JetEngine');
  7. db.CompactDatabase('Provider=Microsoft.Jet.OLEDB.4.0;' +
  8. 'Data Source=' + PathDb + ';Jet OLEDBatabase Password="";',
  9. 'Provider=Microsoft.Jet.OLEDB.4.0;' +
  10. 'Data Source=' + ExtractFilePath(PathDb) + 'Datos_new.mdb' +
  11. ';Jet OLEDB:Database Password=""' +
  12. ';Jet OLEDB:Engine Type=5'); // 4 se for Access 97
  13. if not DeleteFile(PathDb) then
  14. // file://Borrar bd antigua
  15. begin
  16. ShowMessage('Ocurrienron errores renombrando los archivos temporales!'
  17. + #13 + 'La operacion fue cancelada.');
  18. DeleteFile(ExtractFilePath(PathDb) + 'nuevabd.mdb');
  19. // file://Borrar archivos temporales
  20. exit;
  21. end;
  22. RenameFile(ExtractFilePath(PathDb) + 'nuevaBD.mdb', PathDb);
  23. //file://Renombra la bd compactada
  24. DeleteFile(ExtractFilePath(PathDb) + 'nuevabd.mdb');
  25. //file://Borrar archivos temporales
  26. //*** Renombrar de nuevo la BD y ponerle el nombre original ***\\
  27. RenameFile(ExtractFilePath(PathDb) + 'Datos_new.mdb', ExtractFilePath(PathDb) + 'Datos.mdb');
  28. ShowMessage('Proceso Concluído con exito!');
  29. {except
  30. on e: Exception do
  31. ShowMessage(E.Message);
  32. end
  33. finally
  34. db := unassigned;
  35. // file://Limpia variables de objetos
  36. end;}
  37. end;
  38. function TForm1.GetADOObject(ADOClass: string): OLEVariant;
  39. var o: OLEVariant;
  40. begin
  41. try
  42. o := CreateOLEObject(ADOClass);
  43. except on EOleException do
  44. o := unassigned
  45. end;
  46. Result := o;
  47. end;
  48.  
  49.  
  50. procedure TForm1.Button1Click(Sender: TObject);
  51. begin
  52. Mi_conexion.Connected := false; //AdoConection
  53. Mi_Conexion.Close;
  54. AdoTable1.Close;
  55. CompactaMDB(sender); //llamamos al procedimiento
  56. Mi_Conexion.Connected := true;
  57. Mi_Conexion.Open;
  58. AdoTable1.Open;
  59. end;
  60.  

No lo he probado, miralo.  :P
Título: Re: Compactar Base De Datos
Publicado por: dyanna en Jueves 6 de Octubre de 2005, 19:01
Visita esta pagina:
http://delphi.about.com/od/sqlservermsdeac...l/aa091801a.htm (http://delphi.about.com/od/sqlservermsdeaccess/l/aa091801a.htm)

De ahi obtuve la solucion,

Bye.