• Lunes 18 de Noviembre de 2024, 08:32

Autor Tema:  Porque???  (Leído 2187 veces)

Kev

  • Miembro HIPER activo
  • ****
  • Mensajes: 654
    • Ver Perfil
Porque???
« en: Miércoles 24 de Marzo de 2004, 17:25 »
0
Hola a todos, mi pregunta es la siguiente:

Tengo una aplicacion donde utilizo una Base de datos (MSAcces) que la uso como auxiliar para enlazar a un reporte, es decir, cada vez que envio a imprimir, primero vacio todas las tablas de la BD y leugo lleno las tablas de la base de datos auxiliar y luego llamo al reporte (Crystal reports) para que utilize los datos de la BD auxiliar, el programa me funciona muy bien solo hay un problema, que recien me di cuenta, la base de datos va creciendo (ocupaba unos cuantos Kb y luego ocupo varios, demasiados, para su contenido), es decir es como si la BD estaria almacenando todos los datos de todas las veces que mande a imprimir, pero al revisarla no es asi, la BD solo contiene los datos de la ultima vez que se envio a imprimir, no se que es lo que esta pasando.

Alguien me puede ayudar, o dar alguna sugerencia de como resuelvo esto?

Gracias de antemano
 :smartass:  :comp:
La teoria es asesinada tarde o temprano por la experiencia
Albert Einstein
Kev - 3 DCE
-----------------------------------------------------
Articulos:
Convertir texto a imagen en ASP.NET
Trabajando con el Global.asax

Brroz

  • Miembro de PLATA
  • *****
  • Mensajes: 1058
    • Ver Perfil
Re: Porque???
« Respuesta #1 en: Miércoles 24 de Marzo de 2004, 17:31 »
0
Hola Kev.

Lo que te ocurre es que el espacio de los registros deleteados en la bd sigue ocupando espacio. Para solucionarlo compacta la base de datos.

Chao.

Brroz

  • Miembro de PLATA
  • *****
  • Mensajes: 1058
    • Ver Perfil
Re: Porque???
« Respuesta #2 en: Miércoles 24 de Marzo de 2004, 17:39 »
0
Hola de nuevo.

Con una referencia a DAO:
Código: Text
  1.  
  2.      DAO.CompactDatabase "DbOrigen.mdb" , "DbDestino.mdb"
  3.  
  4.  
La bd no se puede compactar sobre si misma, pero luego la copias y listo.

Si usas ADO, ahora mismo no sé como hacer esto, tendría que buscarlo.

Otra posibilidad es usar la automatización de Access y usar el objeto DoCmd de la base de datos.

Suerte.

Kev

  • Miembro HIPER activo
  • ****
  • Mensajes: 654
    • Ver Perfil
Re: Porque???
« Respuesta #3 en: Miércoles 24 de Marzo de 2004, 23:42 »
0
Muchas gracias por las respuestas, pero estoy usando ADO, alguien me podria explicar un poco mas eso de compactar la base de datos?

* Hay alguna forma de borrar una tabla sin que los datos anteriores continuen, todo esto mediante ADO.

Gracias de antemano
 :hola:
La teoria es asesinada tarde o temprano por la experiencia
Albert Einstein
Kev - 3 DCE
-----------------------------------------------------
Articulos:
Convertir texto a imagen en ASP.NET
Trabajando con el Global.asax

Brroz

  • Miembro de PLATA
  • *****
  • Mensajes: 1058
    • Ver Perfil
Re: Porque???
« Respuesta #4 en: Martes 11 de Enero de 2005, 17:27 »
0
Hola Kev.

Ha pasado tiempo, pero hoy viendo un antiguo proyecto me acordé del tema este. Aquí tienes código para compactar una base de datos sin usar DAO.

Código: Text
  1.  
  2.     Dim je As Object
  3.     Set je = CreateObject("JRO.JetEngine")
  4.     je.CompactDatabase "Data Source=C:\Ruta\DbOrg.mdb" _
  5.     & ";Data Source=c:\Ruta\DbDest.mdb;"
  6.  
  7.  

Suerte.

cpmario

  • Miembro HIPER activo
  • ****
  • Mensajes: 629
    • Ver Perfil
    • http://www.cpimario.com
Re: Porque???
« Respuesta #5 en: Martes 11 de Enero de 2005, 23:04 »
0
Otra manera sería, crear una base de datos nueva (con código vb), eliminando la anterior, cada vez que necesites.
O tener una base de datos vacía de respaldo. Eliminas la que tiene datos, y efectúas una copia de la base datos vacía, cambiándole el nombre que necesitas.
 :)

Brroz

  • Miembro de PLATA
  • *****
  • Mensajes: 1058
    • Ver Perfil
Re: Porque???
« Respuesta #6 en: Miércoles 12 de Enero de 2005, 09:38 »
0
Lo malo de lo que dices, cpmario, es que...  ¡ ELIMINAS LOS DATOS DE LA BD !
y estoy seguro que poca gente deseará tal cosa.

Chao.

cpmario

  • Miembro HIPER activo
  • ****
  • Mensajes: 629
    • Ver Perfil
    • http://www.cpimario.com
Re: Porque???
« Respuesta #7 en: Jueves 13 de Enero de 2005, 02:51 »
0
Bueno, es lo que al parecer Kev desea cuando dice:
Citar
primero vacio todas las tablas de la BD
Uso el método de eliminar la base de datos, y crearla de nuevo, le añado los datos y envío a hacer un reporte. Claro esto solo en los casos en que según yo, no es posible hacerlo de otra manera.

 :)

Brroz

  • Miembro de PLATA
  • *****
  • Mensajes: 1058
    • Ver Perfil
Re: Porque???
« Respuesta #8 en: Jueves 13 de Enero de 2005, 09:20 »
0
Tienes toda la razón tron. Sólo tenía en la cabeza indicarle a kev como compactar una db sin usar referencias a DAO y me olvidara del caso concreto, pero como este tema tiene tanto tiempo y lo que quedó pendiente fué el tema de cómo compactar... pos eso.

Chao.