Necesito que me informeis si se puede de alguna forma averiguar si es
necesario o no compactar una base de datos Access. He pensado en ver el
tamaño, pero esto no me vale, porque el tamaño de la base de datos, crece
bastante.
RESPUESTA DE SOFTJAEN
=====================
Averiguar si es necesario o no compactar una base de datos no creo que haya
alguna forma de saberlo o indicarlo.
Es aconsejable compactar a menudo la base de datos para desfragmentar el
archivo, de ésta forma la base de datos compactada ocupará menos espacio y
se ejecutará más rápido, ya que al modificar y eliminar los datos, el
archivo suele fragmentarse, ocupando más espacio en el disco duro.
> Utilizo DAO.
>
Si quieres compactar una base de datos con DAO...
Sintaxis
--------
DBEngine.CompactDatabase path_base_datos_antigua, path_base_datos_nueva,
escenario, opciones, contraseña
Ejemplo
-----------
DBEngine.CompactDatabase "C:\Bd1.mdb", "C:\Bd2.mdb", dbLangGeneral & ";pwd
=" & Contraseña_Nueva_Base, dbVersion30 + dbEncrypt, ";pwd =" &
Contraseña_Antigua_Base
OTRA RESPUESTA
==============
Si usas DAO:
DBEngine.CompactDatabase rutamdbantigua.mdb,
rutamdbcompactada.mdb,,";pwd=xxxx"
Si usas ADO:
Añade en referencias una referencia nueva a Microsoft Jet and Replication
Objects (yo uso la versión 2.6, aunque eso depende del MDACTYPE utilizado).
Las cadenas que se le pasan a la función con las cadenas de conexión a la
base de datos origen y destino, evidentemente el origen no puede ser igual
al destino y la base de datos no puede estar abierta por ningún otro
usuario, ya que este método la va a abrir en modo exclusivo. La cadena de
destino se construye de igual forma que la de origen y después de compactar
se analiza el error por si hubiera alguno y se sustituye la base de datos
destino por la de origen con un simple Name bdcompactada.mdb AS bdnueva.mdb.
Dim jro As jro.JetEngine
Dim strSourceInformes As String
Dim strDestinationInformes As String
Dim conAux As New ADODB.Connection
conAux.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=ruta_a_la_mdb;Jet OLEDB:Database Password=xxxx"
strSourceInformes = Replace(conAux.ConnectionString,
conAux.Properties("Data Source"), ruta_a_la_mdb")
Set jro = New jro.JetEngine
jro.CompactDatabase strSourceInformes, strDestinationInformes
               (
geocities.com/es/ensolva/Descargas)                   (
geocities.com/es/ensolva)                   (
geocities.com/es)