Compacta.vbs
'**************************************************************************************************
'* Si esta cerrada, repara y compacta la base de datos pasada como argumento
( el nombre no debe tener espacios en blanco)
'*
'* uso: en el evento al cerrar del formulario principal de la base de datos
se insertan las siquientes instrucciones
'* Private Sub Form_Close()
'*
'* Dim strRuta As String, _
'* strArchivo As String, _
'* strCadena As String
'*
'* strArchivo = CurrentDb.Name
'* strRuta = Ruta(strArchivo)
'*
'* If MsgBox("¿Estás seguro de que quieres cerrar la aplicación?",
vbOKCancel + vbExclamation, "ATENCION") = vbOK Then
'*
'* strCadena = "Wscript " & strRuta
& "\Compacta.vbs " & strArchivo
'* Shell strCadena
'*
'* Application.Quit
'* End If
'* End Sub ' Form_Close
'*
'* ESH 04/06/03 10:20
'**************************************************************************************************
Dim strArchivo, _
strArchivoCorto, _
strArchivoZip, _
strArchivoZipCorto, _
strRuta, _
objDBEngine, _
strTemporal, _
fso, _
objArgumentos
' creo objetos
Set objArgumentos = WScript.Arguments
Set objDBEngine = CreateObject("DAO.DBEngine.35")
Set WshShell = WScript.CreateObject("WScript.Shell")
' espero un poquito, a que se cierre la base de datos
WScript.Sleep 2500
' obtengo el archivo pasado como argumento
strArchivo = objArgumentos(0)
' reparo la base de datos
objDBEngine.RepairDatabase strArchivo
MsgBox "La base de datos " & strArchivo & " ha sido reparada con exito", vbInformation + VbOKOnly
Set fso = CreateObject("Scripting.FileSystemObject")
' creo en el directorio temporal por defecto, una base
de datos temporal utilizando un número
aleatorio.
' la base de datos se compactará sobre esta temporal
Randomize
strTemporal = fso.GetSpecialFolder(2) & "\TempDB" & _
Int((999 * Rnd) + 1) & ".mdb"
' compacto la base de datos en la temporal
objDBEngine.CompactDatabase strArchivo, strTemporal
' si la compactación finaliza correctamente, elimino
la base de datos original y renombro la temporal
fso.DeleteFile strArchivo
fso.MoveFile strTemporal, strArchivo
MsgBox "La base de datos " & strArchivo & " ha sido compactada con exito", vbInformation + VbOKOnly
' cierro objetos
Set objDBEngine = Nothing
Set fso = Nothing