'************************************************************************************************** '* Si esta cerrada, repara y compacta la base de datos pasada como '* argumento '* '* uso en el evento al cerrar del formulario principal de la base de datos '* se insertan las siquientes instrucciones '* Private Sub Form_Close() '* Shell "Wscript " & curDir & "\compacta.vbs " & CurrentDb.Name '* Application.Quit '* End Sub '* '* ESH 26/05/03 19:25 '************************************************************************************************** Dim strArchivo, _ objDBEngine, _ strTemporal, _ fso, _ objArgumentos , _ WshShell ' 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