11. februar 2008 - 11:35Der er
7 kommentarer og 1 løsning
automatisk sikkerhedskopi
Hej
jeg har en accessdatabase som jeg gerne vil have der bliver oprettet en sikkerhedskopi af en gang i døgnet, hvordan sætter jeg den til at gøre det automatisk?
Cybersikkerhed, realtidsdata og robuste it-systemer er blevet fundamentet for moderne forsvar.
Slettet bruger
11. februar 2008 - 12:04#1
Hvis du skal gøre det fra access, så skal du have en database åben hele døgnet og så på OnTimer Eventen køre eksempelvis flg. modul:
Call fMakeBackup
Selve modulet:
Option Compare Database Option Explicit
Private Type SHFILEOPSTRUCT hwnd As Long wFunc As Long pFrom As String pTo As String fFlags As Integer fAnyOperationsAborted As Boolean hNameMappings As Long lpszProgressTitle As String End Type
Private Const FO_MOVE As Long = &H1 Private Const FO_COPY As Long = &H2 Private Const FO_DELETE As Long = &H3 Private Const FO_RENAME As Long = &H4
Private Const FOF_MULTIDESTFILES As Long = &H1 Private Const FOF_CONFIRMMOUSE As Long = &H2 Private Const FOF_SILENT As Long = &H4 Private Const FOF_RENAMEONCOLLISION As Long = &H8 Private Const FOF_NOCONFIRMATION As Long = &H10 Private Const FOF_WANTMAPPINGHANDLE As Long = &H20 Private Const FOF_CREATEPROGRESSDLG As Long = &H0 Private Const FOF_ALLOWUNDO As Long = &H40 Private Const FOF_FILESONLY As Long = &H80 Private Const FOF_SIMPLEPROGRESS As Long = &H100 Private Const FOF_NOCONFIRMMKDIR As Long = &H200
Private Declare Function apiSHFileOperation Lib "Shell32.dll" _ Alias "SHFileOperationA" _ (lpFileOp As SHFILEOPSTRUCT) _ As Long
Function fMakeBackup() As Boolean Dim strMsg As String Dim tshFileOp As SHFILEOPSTRUCT Dim lngRet As Long Dim strSaveFile As String Dim lngFlags As Long Const cERR_USER_CANCEL = vbObjectError + 1 Const cERR_DB_EXCLUSIVE = vbObjectError + 2 On Local Error GoTo fMakeBackup_Err
If fDBExclusive = True Then Err.Raise cERR_DB_EXCLUSIVE
'strMsg = "Er du sikker på at du vil lave et kopi af databasen?" 'If MsgBox(strMsg, vbQuestion + vbYesNo) = vbNo Then _ Err.Raise cERR_USER_CANCEL
'lngFlags = FOF_SIMPLEPROGRESS Or _ ' FOF_FILESONLY Or _ ' FOF_RENAMEONCOLLISION 'strSaveFile = CurrentDb.Name
lngFlags = FOF_SIMPLEPROGRESS Or _ FOF_FILESONLY strSaveFile = "c:\DinSti\DinDatabase.mdb"
fMakeBackup_End: Exit Function fMakeBackup_Err: fMakeBackup = False Select Case Err.Number Case cERR_USER_CANCEL: 'do nothing Case cERR_DB_EXCLUSIVE: MsgBox "The current database " & vbCrLf & CurrentDb.Name & vbCrLf & _ vbCrLf & "is opened exclusively. Please reopen in shared mode" & _ " and try again.", vbCritical + vbOKOnly, "Database copy failed" Case Else: strMsg = "Error Information..." & vbCrLf & vbCrLf strMsg = strMsg & "Function: fMakeBackup" & vbCrLf strMsg = strMsg & "Description: " & Err.Description & vbCrLf strMsg = strMsg & "Error #: " & Format$(Err.Number) & vbCrLf MsgBox strMsg, vbInformation, "fMakeBackup" End Select Resume fMakeBackup_End End Function
Private Function fCurrentDBDir() As String 'code courtesy of 'Terry Kreft Dim strDBPath As String Dim strDBFile As String strDBPath = CurrentDb.Name strDBFile = Dir(strDBPath) fCurrentDBDir = Left(strDBPath, InStr(strDBPath, strDBFile) - 1) End Function
Function fDBExclusive() As Integer Dim db As Database Dim hFile As Integer hFile = FreeFile Set db = CurrentDb On Error Resume Next Open db.Name For Binary Access Read Write Shared As hFile Select Case Err Case 0 fDBExclusive = False Case 70 fDBExclusive = True Case Else fDBExclusive = Err End Select Close hFile On Error GoTo 0 End Function
Synes godt om
Slettet bruger
11. februar 2008 - 12:07#2
Du kan så sætte din Timer til at køre hver 60000 millisekunder (1 time) eller hvordan det nu er og så lave en if sætning, som siger, at hvis Time er ml. 00:00 og 01:00 så skal den fyre modulet af eller hvordan du nu lige vil strikke et eller andet sammen!~)
Dwet er vel ikke nødvendigt at have db kørende konstant. Med Windows Scheduler kan db åbnes på et givent tidspunkt, og med et ur på formen fyrer modulet af.
skal man virkelig selv skrive vba koden til det!? er det noget man normalt gør ude i virksomhederne der bruger access, nu er der måske ikke så mange der bruger access af de store virksomheder, men alligevel. hvad med de professionelle som oracle osv. har de en indbygget funktion der tager backup automatisk. jeg går udfra at backup er noget virksomhederne bruger flittigt? har læst noget om replika i access også er det noget der kan anbefales som sikkerhed, er lidt i tvivl om hvad forskellel på replika og sikkerhedskopi af databasen er
Synes godt om
Slettet bruger
11. februar 2008 - 14:00#5
Normalt vil man bruge et eksternt program og modulet er også mest tænkt, som en manuel backup. Altså en knap, som aktiverer koden (Call fMakeBackup!~)
Bare for god ordens skyld så er en time 3600000 millisekunder!~)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.