Backup progressivi.

Anonimo
2017-08-26T20:37:37+00:00

Ciao,

facendo una ricerca in rete sono riuscito ad adattare il seguente codice per creare il backup del database.

In un modulo:

Declare PtrSafe Function apiCopyFile Lib "kernel32" Alias "CopyFileA" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String, ByVal bFailIfExists As Long) As Long

Sub CopyFile(SourceFile As String, DestFile As String)

       '---------------------------------------------------------------

       ' PURPOSE: Copy a file in use on disk from one location to another.

       ' ACCEPTS: The name of the source file and destination file.

       ' RETURNS: Nothing

       '---------------------------------------------------------------

       Dim Result As Long

         If Dir(SourceFile) = "" Then

            MsgBox Chr(34) & SourceFile & Chr(34) & _

               " is not valid file name."

         Else

            Result = apiCopyFile(SourceFile, DestFile, False)

         End If

End Sub

In un pulsante:

Call CopyFile(CurrentProject.Path & "\Database.mdb", CurrentProject.Path & "\CopiaDatabase.mdb")

Quello che a me servirebbe, è creare ad ogni click del pulsante un backup nuovo, cioè che non si vada a sovrapporre a quello già esistente.

Ad esempio CopiaDatabase1, CopiaDatabase2, CopiaDatabase3 ecc...

Vladimiro

Microsoft 365 e Office | Access | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

44 risposte

Ordina per: Più utili
  1. Anonimo
    2017-08-29T14:22:44+00:00

    Ciao Francesco,

    che dirti!!!

    Comunque, la prova, anche se è farina del tuo sacco :-)

    prova a farla tu con un database ed una maschera vuota tanto penso sia la stessa cosa.

    Nel modulo ho il seguente codice:

    Public Sub BackupBd()

        On Error GoTo BackupBd_Err

        DoCmd.Hourglass True

        Dim fs, f As Object

        Dim wNewFile As String

        Dim wOldFile As String

        Dim wBckFile As String

        'Copie de la BD

        Set fs = CreateObject("Scripting.FileSystemObject")

       'Backup de l'application

        wNewFile = CurrentProject.Path & "" & "Temp_" & CurrentProject.Name

        wOldFile = CurrentProject.Path & "" & CurrentProject.Name

        wBckFile = CurrentProject.Path & "\Backup" & "Backup_" & Date & "_" & Time & "_" & CurrentProject.Name

        fs.CopyFile wOldFile, wNewFile

        ' Compactage

        Application.CompactRepair LogFile:=True, SourceFile:=wNewFile, DestinationFile:=wBckFile

        Kill (wNewFile)

    GoTo NoBackendAccess '(questa parte la saltavo quando avevo il backend su SQL Server. Naturalmente BE e FE devono essere nella stessa directory ed i nomi devono essere standard Pippo.accdb e Pippo_data.accdb)

       'Backup des données

        wNewFile = CurrentProject.Path & "" & "Temp_" & Left(CurrentProject.Name, Len(CurrentProject.Name) - 6) & "_data.accdb"

        wOldFile = CurrentProject.Path & "" & Left(CurrentProject.Name, Len(CurrentProject.Name) - 6) & "_data.accdb"

        wBckFile = CurrentProject.Path & "\Backup" & "Backup_" & Date & "_" & Time & "_" & Left(CurrentProject.Name, Len(CurrentProject.Name) - 6) & "_data.accdb"

        fs.CopyFile wOldFile, wNewFile

        ' Compactage

        Application.CompactRepair LogFile:=True, SourceFile:=wNewFile, DestinationFile:=wBckFile

        Kill (wNewFile)

    NoBackendAccess:

        gMsg = "***** Backup terminé *****"

        MsgBox gMsg, vbExclamation, Application.Name

    BackupBd_Exit:

        DoCmd.Hourglass False

        Exit Sub

    BackupBd_Err:

        MsgErr Err.Number, Err.Description, "mMain", "BackupBd", Application.Name, vbCritical, "Erreur pendant le backup"

        GoTo BackupBd_Exit

    End Sub

    Ed in chiusura maschera:

    Call BackupBd

    Vladimiro

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2017-08-29T12:20:57+00:00

    L'indirizzo lo hai copiato od hai usato la funzione di condivisione?

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2017-08-29T11:12:26+00:00

    Ciao Francesco,

    strano, cliccando su link a me lo dà!

    Prova così:

    https://onedrive.live.com/?id=root&cid=DFDFB766AA86F9D8

    Vladimiro

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2017-08-29T10:00:11+00:00

    Vuota vuol dire che il link non funziona, non trovo il db

    La risposta è stata utile?

    0 commenti Nessun commento
  5. Anonimo
    2017-08-29T06:46:46+00:00

    Directory vuota!

    Ciao Francesco,

    che vuoi dire con directory vuota?

    La routine è inserita nel modulo e la sua esecuzione in chiusura maschera.

    Vladimiro

    La risposta è stata utile?

    0 commenti Nessun commento