Comprimir base de datos.

¿Cómo podría comprimir una base de datos access desde código en vb.net? Necesito que la base de datos quede en formato .mdb y comprimida pero que el usuario solo tenga que hacer click en un botón, ¿es posible?
Respuesta
1
Llegáramos!
Pero eso no es comprimir, es compactar la bd... je je.
Al compactar la bd lo que haces dejar que el sistema reindexe los punteros internos por ti (hablando en términos de 1 bd "real", puesto que access es una versión recortada y para andar por casa de sqlserver que te permite usar bds sin instalar un servidor dedicado). Compactar(o recompactar en este caso) significa buscar términos en la base de datos similares y ahorrar velocidad de accesos, no que te baje de tamaño el peso o contenido de la aplicación global! Para ello tienes que hacer algo similar a lo que te decía antes...
Si en cambio lo que tú quieres es usar esa función concreta del access como una especie de "macro" desde un programa en vb, tendrás que utilizar el interop object de access para vb (es una librería COM con extensión dll a la que tienes que hacer referencia) y mirar a ver si tiene esa función específica, que yo creo que sí pero no me conozco la librería en concreto... lo podría mirar si quieres... exactamente la librería que tienes que referenciar desde visual studio (ya sabes, click derecho en
referencias->agregar referencia...)
Es la dll de la pestaña COM "Microsoft Access X.0 Object Library" (la X depende de la versión de access que tengas instalada. Yo te recomiendo que instales 1 versión que vayan a usar los clientes porque si no en este punto no van a poder comunicarse, puesto que la dll a la que llamen no será la misma).
Sabiendo ahora de lo que hablamos, haz lo siguiente:
1. Crea 1 botón.
2. Introduce el siguiente código, sustituyendo "c:\origen.mdb" por tu archivo de base de datos donde se encuentre y "c:\destino.mdb" por el archivo destino que quieras generar compactado:
Dim A As New Microsoft.Office.Interop.Access.Application
A.CompactRepair("c:\origen.mdb", "c:\destino.mdb", False)
A.Quit()
3. Disfruta.
Saludos y espero que te haya sido de ayuda... para todo lo demás, master card! Je je.
Muchísimas gracias pero lo solucioné utilizando otra librería, la Microsoft jet and replication objects 2.6 library, que es justamente para lo que yo quería. En todo caso, muchas gracias por tu respuesta, seguro que también funciona.
Se me ocurren varias formas... pero si quieres 1 concisa que te deje la bd en .mdb... lo más sensato sería comprimir los campos concretos (columnas) que te vayan a dar más guerra en el momento de almacenarlos en la bd;esto lo puedes hacer mediante una biblioteca de compresión como zlib, que es gratuita, y que puedes utilizar desde .net. una vez comprimido el campo en cuestión antes de almacenarlos en la bd desde vb, lo almacenas en el access como campo blob (o similar, no se cual es el campo en access para archivos binarios). Cuando el cliente solicite este campo, tú tendrás que devolver el campo comprimido al vb.net y allí descomprimirlo de nuevo con zlib. Ejemplo gráfico:
Compresión:
VB.NET
|
|
compresión zlib bajo vb.net
|
|
Pasarela de datos a BD de Access
|
|
BD de Access con el campo blob donde
Vamos a almacenar los datos
Descompresión:
Solicitud del cliente desde vb.net
|
|
Respuesta de la BD de Access con el
Campo blob comprimido a un dataset
|
|
Descompresión del contenido del
dataset en vb.net con zlib
|
|
Salida y muestra del dato al cliente

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas