Compactar y reparar bd

¿Me podrías indicar como puedo compactar y reparar la base de datos desde un botón de comando?

1 respuesta

Respuesta
1
Prueba este código.
Private Sub cmdCompactar_Click()
    ' Compactar una base de datos con ADO
    Dim sDBTmp As String
    Dim je As JRO.JetEngine
    '
    On Error GoTo ErrCompactar
    '
    Set je = New JRO.JetEngine
    '
    ' Crear un nombre "medio" aleatorio
    sDBTmp = "DBT_" & Format$(Minute(Now), "00") & Format$(Second(Now), "00") & ".mdb"
    ' Asegurarnos de que no existe una base con el nombre temporal
    If Len(Dir$(sDBTmp)) Then
        Kill sDBTmp
    End If
    '
    lblInfo.Caption = " Compactando la base de datos..."
    lblInfo.Refresh
    '
    ' Compactar la base de datos
    je.CompactDatabase "Data Source=" & txtNombreBase.Text & ";", _
                       "Data Source=" & sDBTmp & ";"
    '
    ' Eliminar la base de datos original
    Kill txtNombreBase.Text
    '
    ' Renombrar la base temporal con el original
    Name sDBTmp As txtNombreBase.Text
    '
    lblInfo.Caption = " Base de datos compactada."
    LblInfo. Refresh
    '
    Exit Sub
    '
ErrCompactar:
    ' Mostrar el mensaje de error
    MsgBox "Error al compactar la base de datos:" & vbCrLf & _
            Err.Number & " " & Err.Description, _
            VbExclamation, "Error al compactar la base de datos"
    Err. Clear
    lblInfo.Caption = " *** Error al compactar la base de datos ***"
    lblInfo.Refresh
End Sub
Una aperta.
Buen día, he probado el código que me enviaste pero se frena en "Dim je As JRO.JetEngine", y me arroja un mensaje que dice: Error de compilación: No se ha definido el tipo definido por el Usuario.
Hola nuevamente, he activo en referencias la casilla de "Microsoft Jet and replication Objects 2.6 Library", y ahora me arroja el siguiente Error:
Error al compactar la Base de datos:
424 se requiere un objeto
Parece que te canta el texto del comando ErrCompactar:
Anula la línea inicial On Error GoTo ErrCompactar y ejecuta para ver donde te canta el error realmente.
Una aperta.
Hola buen día, he anulado la linea On Error GoTo ErrCompactar y se frena en las siguientes lineas:
lblInfo.Caption = " Compactando la base de datos..."
lblInfo.Refresh
He anulado estas lineas y se vuelve a frenar en las siguientes lineas diciendo que requiere un objeto ( he cambiado el "NombreBase" por el Nombre actual de la base )
je.CompactDatabase "Data Source=" & txtNombreBase.Text & ";", _
                       "Data Source=" & sDBTmp & ";"
He encontrado una línea de comando que es tan simple como útil.
En un botón de un formulario sitúa el código siguiente:
On Error Resume Next
CommandBars. _
FindControl(Id:=2071).accDoDefaultAction

Lo he testeado en versión 2003 y me ha funcionado.
Perdona por el código coñazo que te puse anteriormente.
Una aperta.
Hola, ¿o sea tu me dices que descarte el código anterior y solamente use el ultimo código que me enviaste?
Ok, es un código más simple.
El anterior realizaba una serie de acciones como copiar y renombrar la BD y había que personalizarlo. Este otro es simple y efectivo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas