Foros del Web » Soporte técnico » Ofimática »

Macro: Compactar BD de Access

Estas en el tema de Macro: Compactar BD de Access en el foro de Ofimática en Foros del Web. Hola Colegas, les comento mi duda: trabajo con 2 archivos de excel en red que uso conectados a una base de datos de access e ...
  #1 (permalink)  
Antiguo 07/12/2010, 17:28
Avatar de Pablus00  
Fecha de Ingreso: diciembre-2003
Ubicación: A un click de distancia
Mensajes: 1.044
Antigüedad: 20 años, 3 meses
Puntos: 11
Macro: Compactar BD de Access

Hola Colegas, les comento mi duda: trabajo con 2 archivos de excel en red que uso conectados a una base de datos de access e intento como parte de una rutina compactarla desde una unica PC.

Se que manualmente tengo que abrir la BD de modo exclusivo para poder compactarla, pero a traves de macros puedo hacerlo aun si se encuentra conectada a otro archivo de excel?

Copio mi rutina (tomada prestada) para compactar, que se ejecuta sin errores pero compacta cuando quiere:

Sub compactar_base_de_datos()
'Si hay errores, que continúe
On Error Resume Next
'definimos la ruta y el nombre de la base de datos
base = ThisWorkbook.Path & "\Prueba_BD.mdb"
'creamos el objeto FileSystemObject
Set fso = CreateObject("Scripting.FileSystemObject")
'si hemos informado de la base de datos...
If fso.FileExists(base) Then
'creamos el objeto JetEngine
Set oje = CreateObject("JRO.JetEngine")
'compactamos la base de datos,
'con una copia de respaldo
oje.CompactDatabase "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
base, "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ruta & _
"base_temporal.mdb"
'copiamos reemplazando y borramos
'la copia de la base de datos
fso.CopyFile ruta & "base_temporal.mdb", base
fso.DeleteFile (ruta & "base_temporal.mdb")
'eliminamos el objeto
Set oje = Nothing
'creamos un mensaje para mostrarlo al final
'mensaje = "La base de datos " & base & "," & _
'Chr(13) & "ha sido compactada."
Else
'Si no existe la base de datos, o
'la ruta es incorrecta, mostraremos un
'mensaje distinto
mensaje = "Base de datos o ruta, incorrecta."
End If
'eliminamos el objeto
Set fso = Nothing
'mostramos el mensaje
'MsgBox (mensaje)
End Sub
si no se pudiera compactar mi BD estando conectada a otro archivo de la red, como puedo cortar dicha coneccion del otro ordenador, desde mi PC para luego compactar la BD con una rutina?

Muchas Gracias
__________________
-- Nunca te des por vencido, aún vencido -- Web

Etiquetas: access, bd, macro
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:16.