¿como puedo compactar una BD mediante codigo ?
RESPUESTA
=========
Ya existe en esta WEB un ejemplo de Buho y de Happy para poder compactar mediante
código la propia MDB desde la ue se ejecuta el código.
Es interesante leer dicha explicación, pues recuerdo que una MDB abieta, no se
puede compactar así misma, pues para compactar una MDB, ésta debe estar cerrada.
La pregunta que nos ocupa, se refiere a una MDB externa a la que corre el codigo.
'sr es el archivo origen, con ruta completa
'dt es el archivo destino, tambien con ruta completa
Public Sub BackUpper(sr As String, dt As String)
Dim TDelay As Date
'Hace copia de la base de datos "sr" en la "dt"
On Error GoTo Boquepa
TDelay = Now()
DoEvents
DBEngine.CompactDatabase sr, dt
fin:
Exit Sub
Boquepa:
Select Case Err.Number
Case 3204
'If 6 = MsgBox("La copia de seguridad ya ha sido realizada hoy. ¿Desea reemplazar la copia ya existente por esta?", vbYesNo + vbQuestion) Then
'Borrar la copia existente en el disco
Kill (dt)
Resume
'End If
Case 3024
MsgBox "No se encuentra el archivo origen " & sr & ". NO se ha podido realizar la copia de seguridad.", vbExclamation
Resume fin
Case 3356
'Esperar a que pasen 5 segundos para que surja el error
If DateDiff("s", TDelay, Now()) < 5 Then
Resume
Else
'MsgBox "Para poder hacer copia de seguridad del servidor,no puede estar siendo utilizado en modo exclusivo. Compruebe que no haya ningún otro usuario conectado.", vbExclamation
Resume fin
End If
Case 3343
MsgBox "El archivo seleccionado como origen, no es una base de datos access.", vbExclamation
Resume fin
Case 3043
MsgBox "La ruta (de red) seleccionada no está disponible en estos momentos. No se ha podido acceder al servidor.", vbExclamation
Resume fin
Case 3044
Resume fin
Case Else
MsgBox "DEBUG: # " & Err.Number & ": " & Err.Description
Resume fin
End Select
End Sub
Esta funcion ha sido posteada por Karlitos en News Microsfot Access
               (
geocities.com/es/ensolva/Descargas)                   (
geocities.com/es/ensolva)                   (
geocities.com/es)