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