Packa din databas som finns på webbservern
Förord
Den är placerad på ditt webbhotel och den växer och växer. Egentligen finns bara ett alternativ, använda FTP och ladda hem den, öppna i Access och starta CompactDatabase och slutligen skicka upp den igen.Innehåll
»Men det går att lösa på ett annat sätt - nämligen genom att använda dig av COM objektet för att arbeta med Microsoft Access Objektmodellen och därigenom kalla på metoden CompactDatabase. Detta gör du med att köra CreateObject.
Exemplet nedan pekar på din databas. Du får ändra sökvägen och namnet så det fungerar på din sajt. Genom att köra scriptet så skapas en ny databas som är packad tillsammans med din originalfil.
Obs! Innan du börjar så ta en backup på din databas för det kan ju hända att något oförutsett kan gå fel.
Det går också att lägga in detta scriptet så det körs på klocka, speciellt för er som har egna webbservrar så har du alltid en fin, packad databas efter exempelvis varje natt.
Det kan hända att du måste ändra rättigheter att för din user(guest) så att den har skrivrättigheter och åtkomst till denna katalogen där du placerat din accessdatabas. De eventuella felmeddelanden som du får kommer förhoppningsvis att påvisa vad som skall göras för att det skall fungera.
Var denna artikeln användbar?
Om du gör någon intressant som grund av detta material så skicka gärna det med ett mail eller bifoga en länk till mig så presenterar jag detta som ytterligare exempelfiler för kursen. Om detta innehållet är felaktigt eller du lärt dig fler finesser så skriv gärna en rad eller varför inte en egen kurs baserat på dina erfarenheter. Sänd gärna in dina tips till denna kurs.
/Pelle Johansson
Exemplet nedan pekar på din databas. Du får ändra sökvägen och namnet så det fungerar på din sajt. Genom att köra scriptet så skapas en ny databas som är packad tillsammans med din originalfil.
Obs! Innan du börjar så ta en backup på din databas för det kan ju hända att något oförutsett kan gå fel.
<%
Dim objScript
Dim objAccess
Dim strPathToMDB
Dim strMsg
strPathToMDB = "c:\databaser\sample.mdb"
' Set a name and path for a temporary mdb file
strTempDB = "c:\databaser\comp0001.mdb"
' Initialisera Access 97 applikationen
Object Set objAccess = Server.CreateObject("Access.Application.8")
' För Access 2000, använd Application.9
Set objAccess = Server.CreateObject("Access.Application.9")
' Utför nu Compact-kommandot
' - vid problem så rörs inte originalfilen
objAccess.DbEngine.CompactDatabase strPathToMDB ,strTempDB
If Err.Number > 0 Then
' Problem, vi informerar om detta och avbryter
strMsg = "Följande fel uppstod vid försök till att packa databasen:"
strMsg = strMsg & vbCrLf & vbCrLf & Err.Description
Else
' Skapa File System Object för att kopiera och radera filer
Set objScript= Server.CreateObject("Scripting.FileSystemObject")
' Ta backup på filen "Filename.mdbz" vid oväntade probelm.
objScript.CopyFile strPathToMDB , strPathToMDB & "z", True
' Kopiera den nya databasen till originalfilnamnet
objScript.CopyFile strTempDB, strPathToMDB, True
' Färdiga, ta bort den gamla filen
objScript.DeleteFile strTempDB
' Meddelande
strMsg = "Filen är packad och klar."
End If
Response.Write "Packning av databasen " & strPathToMDB
Response.Write "" & strMsg & ""
' Frigör objekten från minnet
Set objAccess = Nothing
Set objScript = Nothing
' ansluter till min datakälla för att testa
set con = server.createObject("ADODB.Connection")
conStr = "Driver={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("sample.mdb")
con.open conStr
set rst = con.execute("select count(*) from tabell"
if not rst.eof then
response.write "Antal records:" & rst(0)
else
response.write "Inga poster finns"
end if
set rst=nothing
set con=nothing
%>
Det går också att lägga in detta scriptet så det körs på klocka, speciellt för er som har egna webbservrar så har du alltid en fin, packad databas efter exempelvis varje natt.
Eventuella problem..
Det kan hända att du måste ändra rättigheter att för din user(guest) så att den har skrivrättigheter och åtkomst till denna katalogen där du placerat din accessdatabas. De eventuella felmeddelanden som du får kommer förhoppningsvis att påvisa vad som skall göras för att det skall fungera. Var denna artikeln användbar?
Om du gör någon intressant som grund av detta material så skicka gärna det med ett mail eller bifoga en länk till mig så presenterar jag detta som ytterligare exempelfiler för kursen. Om detta innehållet är felaktigt eller du lärt dig fler finesser så skriv gärna en rad eller varför inte en egen kurs baserat på dina erfarenheter. Sänd gärna in dina tips till denna kurs.
/Pelle Johansson
0 Kommentarer