Programación General > Power Builder
Mantenimiento De Registros Mediante Conexión Odbc
(1/1)
juan_pz:
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!
F_Tanori:
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 ---Oleobject AccessString ls_Base,ls_Base2 ls_Base="C:\encuesta.mdb"ls_Base2="C:\encuesta2.mdb" Access=Create OleobjectAccess.ConnectToNewObject("Access.Application") if FileExists(ls_base2) then FileDelete(ls_base2)end if Access.CompactRepair(ls_base,ls_base2,True) /* Remplazar el archivo ORIGINAL por el COMPACTADO */ if FileExists(ls_base2) then FileCopy (ls_Base2,ls_Base, True) FileDelete(ls_base2)end if Access.QuitDestroy Access
Saludos
juan_pz:
: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
F_Tanori:
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
juan_pz:
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? :(
Navegación
Ir a la versión completa