• Jueves 28 de Marzo de 2024, 19:54

Autor Tema:  Mantenimiento De Registros Mediante Conexión Odbc  (Leído 1939 veces)

juan_pz

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Mantenimiento De Registros Mediante Conexión Odbc
« en: Miércoles 25 de Abril de 2007, 07:23 »
0
Hola amigos,
Tengo un problema con respecto a las bases de datos que usan los programas que desarrollo, estas se conectan mediante ODBC, el rollo surge cuando hago un mantenimiento a las tablas, por ejemplo si elimino registros a traves de un "delete from" en el programa, la base de datos no disminuye en peso, al contrario se mantiene; es decir la base va a crecer, en mi caso de una manera desproporcional pues estoy hablando de eliminar aprox 50,000 registros por día, mi BD crece de 70MB a 220MB en un día!!!
La base de datos Access tiene una utilidad llamada "compactar y reparar", con esta opción se reduce significativamente el tamaño de la BD.
La otra opción para reducirle el tamaño es usar el botón "Reparar" que esta en la ventana de ODBC.
La pregunta es, hay alguna forma que se pueda realizar esto automáticamente? mediante código o alguna configuración?
Les agradeceré me puedan dar una ayuda a esto.
Muchas Gracias!
No te sumerjas mucho en las profundidades, la solución puede estar en la superficie ...

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: Mantenimiento De Registros Mediante Conexión Odbc
« Respuesta #1 en: Martes 1 de Mayo de 2007, 19:18 »
0
Si tu base de datos tiene tanto trabajo no creo que access sea lo adecuado deberias conciderar el cambiarlo...

Si aun no haz encontrado la solucion...

para compactar yo lo hago de esta manera y me funciona, es cuestion de que lo adaptes a lo tuyo y ver si requiere validaciones y modificaciones ... (Nota Es necesario tener instalado Access para poder crear el Objeto)

Código: Text
  1. Oleobject Access
  2. String ls_Base,ls_Base2
  3.  
  4. ls_Base="C:\encuesta.mdb"
  5. ls_Base2="C:\encuesta2.mdb"
  6.  
  7. Access=Create Oleobject
  8. Access.ConnectToNewObject("Access.Application")
  9.  
  10.  
  11. if FileExists(ls_base2) then
  12.   FileDelete(ls_base2)
  13. end if  
  14.  
  15. Access.CompactRepair(ls_base,ls_base2,True)
  16.  
  17. /* Remplazar el archivo ORIGINAL por el COMPACTADO */
  18.  
  19. if FileExists(ls_base2) then
  20.   FileCopy (ls_Base2,ls_Base, True)
  21.   FileDelete(ls_base2)
  22. end if  
  23.  
  24. Access.Quit
  25. Destroy Access
  26.  


Saludos
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================

juan_pz

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Re: Mantenimiento De Registros Mediante Conexión Odbc
« Respuesta #2 en: Miércoles 2 de Mayo de 2007, 03:58 »
0
:blink:  Me sale un error cuando ejecuto la aplicación, el error está en la linea Access.CompactRepair(ls_base,ls_base2,True)
Indica que ha habido un error al llamar a la función del objecto externo "compactrepair".
Será por la versión? yo trabajo con Power 9.0
No te sumerjas mucho en las profundidades, la solución puede estar en la superficie ...

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: Mantenimiento De Registros Mediante Conexión Odbc
« Respuesta #3 en: Miércoles 2 de Mayo de 2007, 08:33 »
0
No creo que sea la version, ese codigo esta probado en 8 y en 10 el nueve no lo tengo :P

La base de datos estaba cerrada cuando intentaste compactar? debe estarlo
ni aun el mismo access puede compactar las base de datos abierta :P


las rutas son correctas?
verifica que no vayas a estar haciendo referencia a rutas invalidas



Saludos
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================

juan_pz

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Re: Mantenimiento De Registros Mediante Conexión Odbc
« Respuesta #4 en: Miércoles 2 de Mayo de 2007, 16:24 »
0
Está todo bien, y adaptado a mis bases, todo el código también, lo he revisado linea por linea, el problema que Power no reconoce la función CompacRepair.
He intentado Insertar el Objeto con el control Ole pero no aparece por ningun lado "Microsoft Access", será este el problema?  :(
No te sumerjas mucho en las profundidades, la solución puede estar en la superficie ...