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ù recente
  1. Anonimo
    2017-08-30T18:13:14+00:00

    Beh, se hai risolto... a me non ha mai dato problemi

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2017-08-30T17:47:26+00:00

    ma se elimini la creazione della variabile wBckFile come ottieni il nome file da salvare?

    Ciao Francesco,

    il problema, secondo me, è proprio qui.

    Tuo codice modificato:

    Public Sub BackupBd()

        On Error GoTo BackupBd_Err

        DoCmd.Hourglass True

        Dim gmsg As String

        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

    Risultato:

    Vladimiro

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2017-08-30T16:16:40+00:00

    ma se elimini la creazione della variabile wBckFile come ottieni il nome file da salvare?

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2017-08-30T15:46:52+00:00

    Scusa, ma hai provato ad verificare passo-passo con il debug?

    Ciao Francesco,

    non mi dà l'errore, altrimenti non mi avrebbe rilasciato una copia del database.

    Ho fatto un sacco di prove e sono giunto alla conclusione che è proprio questo tipo di percorso che, pur privo di errori, non mi viene riconosciuto.

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

    Prova ad eliminare questa path e vedi che succede:

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

    Sono convinto che ti rilascia il backup come l'immagine da me postata.

    Vladimiro

    La risposta è stata utile?

    0 commenti Nessun commento
  5. Anonimo
    2017-08-29T22:03:02+00:00

    Scusa, ma hai provato ad verificare passo-passo con il debug?

    La risposta è stata utile?

    0 commenti Nessun commento