Compactar Bases de datos Te envío código que lo hace. Sólo tendrás que retocarlo.
Private Sub Command1_Click()
If List1.Text = "" Then
MsgBox " Seleccione el año por favor.", , "COMPACTAR BASE DE DATOS"
Else
barra.Visible = True
barra.Enabled = True
barra.Value = 1
varany = List1.Text & ".mdb"
' Compactar una base de datos con ADO
Dim sDBTmp As String
barra.Value = 2
Dim je As JRO.JetEngine
'
barra.Value = 5
On Error GoTo ErrCompactar
'
barra.Value = 7
Set je = New JRO.JetEngine
'
barra.Value = 9
' 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
barra.Value = 11
If Len(Dir$(sDBTmp)) Then
Kill sDBTmp
End If
barra.Value = 13
' Compactar la base de datos
je.CompactDatabase "Data Source=" & App.Path & "\" & varany & ";", _
"Data Source=" & App.Path & "\" & sDBTmp & ";"
barra.Value = 15
'
' Eliminar la base de datos original
Kill App.Path & "\" & varany
'
barra.Value = 17
' Renombrar la base temporal con el original
Name App.Path & "\" & sDBTmp As App.Path & "\" & varany
barra.Value = 21
barra.Visible = False
MsgBox "Base de datos compactada satisfactoriamente.", , "COMPACTAR BASE DE DATOS"
'
rs1.Close
Set rs1 = Nothing
barra.Value = 21
Form3compac.Visible = False
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
End If
End Sub
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
If UnloadMode = vbFormControlMenu Then
Call conexion
rs0.Close
Set rs0 = Nothing
Call conexion1
rs1.Close
Set rs1 = Nothing
Conn.Close
Set Conn = Nothing
Form3compac.Visible = False
End If
End Sub
Suerte y un saludo a todos. |