Omschrijving:Met dit ASP script kan er online een Access database worden gecomprimeerd. Met behulp van een dropdown menu kan de database geselecteerd worden. Vervolgens wordt er aangegeven of de database compressie gelukt is of niet. Het comprimeren van de database kan ervoor zorgen dat de database wel 20% kleiner wordt.
Extra informatie:
Voor het gebruik moet het path en de database in het script worden ingevuld.
Na het online comprimeren van mijn access-database wordt die inderdaad veel kleiner. Dit komt de snelheid van mijn toepassing ten goede. Het verschil kan enorm zijn.
Mijn vraag: weet er iemand of je een database online mag comprimeren terwijl ze in gebruik is? Of moeten eerst alle verbindingen afgesloten worden? Ik deed enkele tests waarbij alles prima verliep, maar ik zou er zeker van willen zijn dat ik op deze manier mijn data niet corrumpeer.
Ik denk dat het script zo meer doet [code]<%@LANGUAGE="VBSCRIPT" %>
<b>COMPRIMEER DE DATABASE</b> !<br>
<%
Const Jet_Conn_Partial = "Provider=Microsoft.Jet.OLEDB.4.0; Data source="
Dim strDatabase, strFolder, strFileName
'// Dit stukje wijzigen
' geef het volledige path van de database
strFolder = "Pad naar de database"
strDatabase = "naam van de database.mdb"
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 ("Not Found: " & strFolder & strDatabase)
Stop
Else
If .FileExists(strFolder & "Temp" & strDatabase) Then
Response.Write ("Er liep iets verkeerds met de vorige poging, aub probeer opnieuw")
.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 ("<Select Name=""DBFileName"">")
For Each Item In oFolders.GetFolder(strFolder).Files
if LCase(Right(Item, 4)) = ".mdb" Then
Response.Write ("<OPTION Value=""" & Replace(Item, strFolder, "") & """>" & Replace(Item, strFolder, "") & "</OPTION>")
End if
Next
Response.Write ("</Select>")
Set oFolders = Nothing
End Sub
%>
<br>
<FORM method="POST" action="default.asp?pagina=comprimeer">
<%dbList%> <INPUT type="submit" value="Compact" name="cmd"></P>
</FORM><br>
<br>
<%
if request("pagina") = "comprimeer" then
' comprimeer database en vertel of het is gelukt
Select Case Request.form("cmd")
Case "Compact"
dbCompact Request.form("DBFileName")
response.write "<table width=200 border=0 cellpadding=0 cellspacing=1 bgcolor=""#95954D"" align=center ><tr>"
response.write "<td valign=top><table width=""100%"" border=0 cellpadding=4 cellspacing=0 bgcolor=""#D8D8B4"">"
response.write "<tr><td valign=middle align=center class=titel2>Database " & Request.form("DBFileName") & " is optimized !</td></tr></table></td></tr></table>"
End Select