| |  |  | Miembros: Mensajes: Temas: Online: Ultimo Miembro: | | |  | | |
 | 
13-11-2006, 17:55:24
| | Gran Participación en el Foro | | Registrado: ago 2004 Ubicación: Buenos Aires - Argentina Posts: 361
| | Hola!
Esta clarisimo lo que me aconsejas, por eso mi pregunta era:
Como seria el codigo para Compactar, Reparar y hacer un BackUp en ADO ¿?
Hay alguien en el foro que tenga desarrollado esto y seria tan amable de subirlo.
Y si es largo y complejo el codigo que tenia yo, por eso pense que quizas si cambiaba el codigo a ADO, se podria simplificar y lo entenderia mejor, pero necesito que alguien me lo pase...GRACIAS
Diego Ares | 
13-11-2006, 18:33:23
|  | Moderador | | Registrado: dic 2002 Ubicación: Madrid Posts: 4.308
| | Ningún usuario te lo podrá subir. No se pueden utilizar los métodos DBEngine.CompactDatabase y DBEngine.RepairDatabase a través de la aquitectura ADO por una razón muy sencilla: NO EXISTEN.
Como ya te han dicho tienes que referenciar MicroSoft DAO para utilizarlas, independientemente que en las conexiones y acceso a datos lo tengas diseñado mediante ADO o ADODBC.....
Para reparar o compactar una base de datos, no hace falta conectarse ni acceder a ella, mas bien debe estar cerrada y bien cerrada, de lo contrario no puede compactar ni reparar...
Otra cosa más: CompactDatabase NO REPARA, sencillamente compacta y elimina registros y cualquier objeto no utilizado....Para reparar se tiene que utilizar sin darle más vueltas el método RepairDatabase.
Espero que el mensaje te resulte útil y clarificador. | 
13-11-2006, 21:29:53
|  | Administrador | | Registrado: dic 2002 Ubicación: BURGOS - ESPAÑA Posts: 5.490
| | Y para redondear el mensaje, que como ves está suficientemente apoyado por quienes tenemos experiencia (y para colmo, refrendado por quienes tienen además ciencia...): la instrucción RepairDatabase NO FUNCIONA con versiones posteriores a Office'97... CompactDatabase sí funciona al menos con la versión 2000, que es hasta donde llega mi experiencia, ya que la versión 2003 me da cierta grima y la rehuyo... | 
13-11-2006, 22:32:44
| | Moderador | | Registrado: dic 2002 Ubicación: Oviedo - Asturias Posts: 1.260
| | Pues a mi me da grima Microsoft así en general y no me dejan rehuirlo, ja,ja,ja
Vale, Abuelo, es que ... no me pude resistir, pero.... he de decirte (esto aquí entre nos y que no se entere nadie) que la versión de Office 2003 es bastante buena y eficiente, la de XP es una basurilla, pero la 2003 a mi me va más rápido que las demás (pa mi que se equivocaron y lo hicieron bien) ,ja,ja,ja
Pablo, no chilles mucho, que últimamente estaba de lo más prudente, ja,ja,ja
:smt004 | 
13-11-2006, 22:44:45
|  | Administrador | | Registrado: dic 2002 Ubicación: BURGOS - ESPAÑA Posts: 5.490
| | Pues a mí me da grima porque me he encontrado con aplicaciones mías que, estando funcionando bien con 2000, la empresa ha decidido implantar 2003 y... ¡¡¡zas!!!, todo lo relacionado con VBA se ha ido al garete... (Bueno, no todo... pero han empezado a presentar errores, que tendría que solucionar preparando una nueva instalación tras haber instalado en mi equipo la versión 2003..., supongo... Y, claro está, no puede verse uno obligado a adquirir las versiones que quieran instalar todos los clientes, digo yo)
Menos mal que tales clientes han reconocido su culpa en los fallos, y han tomado la decisión más razonable: Reinstalar la antigua versión 2000... | 
14-11-2006, 02:17:03
| | Gran Participación en el Foro | | Registrado: ago 2004 Ubicación: Buenos Aires - Argentina Posts: 361
| | Hola!
Si si entiendo por donde viene la cosa, yo desde mi ignorancia lo que pretendia es si lo que manualmente hacia abriendo la base de datos defectuosa desde Access 2003 y me preguntaba si la queria reparar y le decia que si y para serciorarme más aun despues desde el menu de Access compactaba y reparaba, esto mismo se podia hacer de alguna manera, no se como desde la programación en Visual Basic 6, por lo que parece es mucho pero mucho mas complicado de lo que parecia...
Diego | 
14-11-2006, 11:54:36
|  | Administrador | | Registrado: dic 2002 Ubicación: BURGOS - ESPAÑA Posts: 5.490
| | Pues espero te haya quedado suficientemente claro que para compactarla no tienes nada más que cerrarla y ejecutar la orden que se te indica... Nada más simple. Por ello no entiendo tu frase de "por lo que parece es mucho pero mucho mas complicado de lo que parecia"... | 
14-11-2006, 12:08:20
| | Gran Participación en el Foro | | Registrado: ago 2004 Ubicación: Buenos Aires - Argentina Posts: 361
| | Si lo de compactarla y de que hace eso nada mas, lo entendi, tambien entendi que no funciona el tema de reparar, que quedo discontinuado como lei en el help del MSDN, a lo que me referia que es mucho mas complicado de lo que parecia era justamente al tema de reparar la base de datos por codigo...
Pregunta curiosa sin entrar en demasiado detalle, si esto mismo lo de reparar, compactar y backup de una base de datos en access lo quisiera hacer pero en VB.Net, es decir en Visual Basic 2005, se puede hacer? más que nada el tema de reparar que es mi problema, lo planteo solamente como inquietud y porque en un futuro no muy lejano quiero hacer la transicion hacia VB.Net GRACIAS
Diego Ares | 
14-11-2006, 14:04:04
|  | Moderador | | Registrado: dic 2002 Ubicación: Madrid Posts: 4.308
| | La verdad, estimado Diego, creo que nos dejas con el desencanto de no cumplir el objetivo deseado..... hacer fácil lo complicado...
Yo, con el permiso de J.M.Movilla, te adjunto nuevamente el código necesario para tratar de reparar una base de datos deteriorada....si te parece complicado....pues ya nos lo explicarás, porque -sinceramente- al menos a mi persona se le escapa dicha complejidad...no acierto a verla Código: If FIle("TEMP.mdb") Then Kill("TEMP.mdb")
DBEngine.RepairDataBase basededatos, "TEMP.MDB"
Kill("c:\\mymdb\\sample.mdb")
FileCopy "TEMP.mdb", "c:\\mymdb\\sample.mdb"
Kill("TEMP.mdb") | 
14-11-2006, 17:16:36
| | Gran Participación en el Foro | | Registrado: ago 2004 Ubicación: Buenos Aires - Argentina Posts: 361
| | No me malinterpreten, valoro y mucho toda la ayuda que me brinda el foro, de hecho siempre recurro a Uds. cuando tengo dudas y siempre solucionaron mis incognitas, el tema es que yo tengo DAO 3.6 y por lo que Uds. mismos explicaron no funciona el metodo repairdatabase con esta libreria y tampoco se puede reparar una base de access 2003, todo esto surge de lo que venimos hablando, es mas ese codigo q pones ahi lo probe y no me funciono, quizas deberia cambiar de libreria y poner DAO 3.51, pero no se q inconvenioentes me podria traer esto, ya q ambas librerias ya probe y son incompatibles las dos juntas...Pero a no desanimarse, tampoco creo que de para seguir por el momento investigando mucho mas, el tema es que mi rutina para compactar y hacer backup me funciona muy bien y queria ver si podia reparar la base de datos, pero me parece q ya pasa por un tema de q el metodo repaidatabase no funciona mas con DAO 3.6 y eso escapa a todo nosotros, es tan simple como eso, igual voy a volver a probar a ver si puedo dar con la solucion, utilizando el codigo q me pasastes, pero a no desilusionarse, quizsa mal interpretaron mis palabras o no supe expresarme bien, GRACIAS
Diego Ares | | Herramientas | | | | Desplegado | Mode Lineal |
Normas de Publicación
| no Puedes crear nuevos temas no Puedes responder a temas no Puedes adjuntar archivos no Puedes editar tus mensajes Código [IMG] está habilitado Código HTML está deshabilitado | | | La franja horaria es GMT. Ahora son las 07:34:51.
Powered by vBulletin® Version 3.6.8 Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO 3.1.0
A vBSkinworks Design
|  |