La Web del Programador: Comunidad de Programadores
 
    Pregunta:  40405 - COMPACTAR Y REPARAR ACCESS DESDE VB
Autor:  Carlos Serrano
Estoy interesado en saber si es posible activar desde Visual basic la opción de Compactar y reparar la base de datos de Access...

Gracias...

  Respuesta:  Pedro Valencia
Este es el codigo para poder compactar una base de datos
***********************
Sub CompactDatabaseX()

Dim dbsNeptuno As Database

Set dbsNeptuno = OpenDatabase("Neptuno.mdb")

' Muestra las propiedades de la base de datos original.
With dbsNeptuno
Debug.Print .Name & ", versión " & .Version
Debug.Print " Secuencia de ordenación = " & .CollatingOrder
.Close
End With

' Asegúrese de que no existe un archivo con el
' nombre de la base de datos compactada.
If Dir("NeptunCo.mdb") <> "" Then _
Kill "NeptunCo.mdb"

' Esta instrucción crea una versión compactada de
' la base de datos Neptuno que utiliza la secuencia
' de intercalación del lenguaje coreano.
DBEngine.CompactDatabase "Neptuno.mdb", _
"NeptunCo.mdb", dbLangKorean

Set dbsNeptuno = OpenDatabase("NeptunCo.mdb")

' Muestra las propiedades de la base de datos compactada.
With dbsNeptuno
Debug.Print .Name & ", versión " & .Version
Debug.Print " Secuencia de ordenación = " & .CollatingOrder
.Close
End With

End Sub
**************************

y este el el codigo para poder repararla
**************************************

Sub RepairDatabaseX()

Dim errBucle As Error

If MsgBox("¿Desea reparar la base de datos Neptuno?", _
vbYesNo) = vbYes Then
On Error GoTo Err_Reparar
DBEngine.RepairDatabase "Neptuno.mdb"
On Error GoTo 0
MsgBox "¡Fin del procedimiento reparar!"
End If

Exit Sub

Err_Reparar:

For Each errBucle In DBEngine.Errors
MsgBox "¡Falló Repair!" & vbCr & _
"Número de error: " & errBucle.Number & _
vbCr & errBucle.Description
Next errBucle

End Sub
*******************

Espero te sirva de ayuda
Saludos