• Domingo 5 de Mayo de 2024, 00:27

Autor Tema:  Compactar Base De Datos  (Leído 2861 veces)

dyanna

  • Miembro activo
  • **
  • Mensajes: 40
  • Nacionalidad: co
    • Ver Perfil
Compactar Base De Datos
« en: Lunes 29 de Marzo de 2004, 17:07 »
0
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

  • Miembro activo
  • **
  • Mensajes: 40
  • Nacionalidad: co
    • Ver Perfil
Re: Compactar Base De Datos
« Respuesta #1 en: Sábado 3 de Abril de 2004, 01:47 »
0
Ya lo pude hacer.. :)

Saludos..

tigreton

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Re: Compactar Base De Datos
« Respuesta #2 en: Miércoles 5 de Octubre de 2005, 23:58 »
0
Dyanna, tengo el mismo problema que tu con la base de datos. Necesito compactarla. Por favor puedes indicarme como lo hago.


Gracias

bartolomeo

  • Miembro MUY activo
  • ***
  • Mensajes: 207
    • Ver Perfil
Re: Compactar Base De Datos
« Respuesta #3 en: Jueves 6 de Octubre de 2005, 00:12 »
0
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

[size=109]Por que Rolo soy yo¡¡¡¡¡[/size]

dyanna

  • Miembro activo
  • **
  • Mensajes: 40
  • Nacionalidad: co
    • Ver Perfil
Re: Compactar Base De Datos
« Respuesta #4 en: Jueves 6 de Octubre de 2005, 19:01 »
0
Visita esta pagina:
http://delphi.about.com/od/sqlservermsdeac...l/aa091801a.htm

De ahi obtuve la solucion,

Bye.