Compactar BD Access en ASP

 

Siempre he tenido ganas de explicar como compactar una base de datos en Access desde ASP, es uno de los trucos que más utilidad le dí en mis inicios con la programación.

Claro está que ya nunca uso bases de datos Access para mis proyectos, pero puede que para alguno pequeño aún haga falta, el código es un poco extenso y difícil de comprender si no tienes mucha experiencia pero verás que con un poco de calma, todo sale:

<%
Const Jet_Conn_Partial = "Provider=Microsoft.Jet.OLEDB.4.0; Data source="
Dim strDatabase, strFolder, strFileName

'#################################################
'# Edite las siguientes dos líneas
'# Defina el path completo de la base de datos
strFolder = "C:Inetpubwwwroothermeshermes_db"
'# Ponga el nombre de la Base de datos
strDatabase = "prueba2.mdb"
'# No hay mas que editar
'##################################################

Private Sub dbCompact(strDBFileName)
Dim SourceConn
Dim DestConn
Dim oJetEngine
Dim oFSO

SourceConn = Jet_Conn_Partial & strFolder & strDatabase
DestConn = Jet_Conn_Partial & strFolder & "Temp" & strDatabase

Set oFSO = Server.CreateObject("Scripting.FileSystemObject")
Set oJetEngine = Server.CreateObject("JRO.JetEngine")

With oFSO

If Not .FileExists(strFolder & strDatabase) Then
Response.Write ("No encontrada: " & strFolder & strDatabase)
Stop
Else
If .FileExists(strFolder & "Temp" & strDatabase) Then
Response.Write ("Algo malo paso la ultima vez " _
& "Borrando la base de datos vieja... Por favor intenete de nuevo")
.DeleteFile (strFolder & "Temp" & strDatabase)
End If
End If
End With

With oJetEngine
.CompactDatabase SourceConn, DestConn
End With

oFSO.DeleteFile strFolder & strDatabase
oFSO.MoveFile strFolder & "Temp" _
& strDatabase, strFolder& strDatabase

Set oFSO = Nothing
Set oJetEngine = Nothing
End Sub

Private Sub dbList()
Dim oFolders
Set oFolders = Server.CreateObject("Scripting.FileSystemObject")
Response.Write ("")

Set oFolders = Nothing
End Sub

%>
<%
' Compacta la base de datos y le dice al usuario que la base de datos ha sido optimizada
Select Case Request.form("cmd")
Case "Compactar"
dbCompact Request.form("DBFileName")
Response.Write ("Database " & Request.form("DBFileName") & " ha sido Optimizada.")
End Select
%>

 

Compactar y reparar una base de datos



<%dbList%>

 

Si quieres que te ayudemos en algo o simplemente comentar alguna parte del código, puedes hacerlo dejando un comentario.