Access - compactar y reparar

 
Vista:

compactar y reparar

Publicado por Félix (183 intervenciones) el 19/06/2007 10:42:06
wenas, necesito saber en que modo puedo llamar mediante vb a acces para compactar y reparar ya que escribo en codigo: DoCmd.RunCommand acCmdCompactDatabase
y me dice el asistente que lo haga desde la barra de herramientas de access...

Gracias Un saludo Félix
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Compactar y reparar base de datos mediante VBA

Publicado por Alejandro (4142 intervenciones) el 14/08/2023 16:03:01
¡Hola, Félix!

Es cierto que el comando `DoCmd.RunCommand acCmdCompactDatabase` puede no funcionar directamente en algunos contextos de código VBA en Access debido a que es un comando específico del entorno de interfaz de usuario. Sin embargo, puedes usar un enfoque diferente para lograr la compactación y reparación de la base de datos en código VBA.

Puedes utilizar la función `DBEngine.CompactDatabase` para compactar y reparar la base de datos desde código VBA. Aquí tienes un ejemplo de cómo hacerlo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Sub CompactarRepararBaseDeDatos()
    Dim db As Object
    Dim strSrc As String, strDst As String
 
    ' Ruta y nombre de la base de datos actual
    strSrc = CurrentDb.Name
 
    ' Ruta y nombre temporal para la base de datos compactada
    strDst = Left(strSrc, Len(strSrc) - 4) & "_temp.mdb"
 
    ' Crear una instancia del motor de la base de datos
    Set db = CreateObject("DAO.DBEngine.120")
 
    ' Compactar y reparar
    db.CompactDatabase strSrc, strDst
 
    ' Cerrar la base de datos actual
    Application.Quit
 
    ' Renombrar la base de datos compactada para reemplazar la original
    Name strDst As strSrc
 
    ' Abrir la base de datos nuevamente
    Application.FollowHyperlink strSrc
End Sub

Asegúrate de guardar una copia de seguridad de tu base de datos antes de ejecutar el código, ya que este proceso cambia el nombre de la base de datos original y podría haber pérdida de datos si algo sale mal.

Este código crea una copia compactada y reparada de la base de datos original, cierra la base de datos actual, renombra la copia compactada para reemplazar la original y luego vuelve a abrir la base de datos.

Ten en cuenta que el ejemplo utiliza `DAO.DBEngine.120`, que corresponde a la versión 12.0 de la biblioteca de acceso a datos de DAO. Asegúrate de que sea la versión adecuada para tu entorno. También, podrías necesitar ajustar rutas y nombres de archivo según tus necesidades.

¡Espero que esto te sea de ayuda!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar