Backup automatico

di il
14 risposte

Backup automatico

Buonasera a tutti, vorrei eseguire un backup in automatico alla chiusura del mio db,ho provato alcuni codici copiati dalla rete e adattarli alla mia esigenza ma nulla ho sempre dei problemi  con errori vari. Il problema è che forse non sono in grado….anzi ne sono sicuro.Qualcuno può darmi una mano?

Il db è ad uso esclusivo

Grazie

14 Risposte

  • Re: Backup automatico

    Prima cosa serve capire che tentativi hai fatto, ma se non hai minimamente le basi… temo sia una cosa complicata da portare avanti.

    Il Forum da suggerimenti non “Prodoto finito”…

  • Re: Backup automatico

    22/07/2024 - nerofumo ha scritto:


    ho sempre dei problemi  con errori vari

    Concordo con @Alex e aggiungo che, dato che dovresti indicare quali sono questi “errori vari” in dettaglio.

  • Re: Backup automatico

    Oltretutto ricordo che diversi post che hai fatto… sono rimasti sostanzialmente INSOLUTI, nel senso che hai lasciato cadere il tema senza indicare se hai risolto o meno ed eventualmente come, e questo non è proprio bellissimo…

  • Re: Backup automatico

    Buongiorno, Alex ho cercato di rispondere ai post che avevo lasciato in sospeso, hai ragione non è stato molto dignitoso da parte mia e mi scuso con tutti voi, ma non me ne volere ci sono ragioni serie per cui non ho risposto, ho ripreso in mano il computer dopo un anno circa dagli ultimi post e visto che sai….sapete  la mia età è semplice il sapere del perchè.

    Ripeto che questo è un codice copiato volevo poi adattarlo alla mia esigenza, ma mi da errore su “Dim Fd As FileDialog ” riferimento mancante sono andato a vedere ma quel riferimento non è presente “Microsoft Office project 16.0 Object Library”

    Volevo fare il backup all'uscita del db perchè diversi dati erano mancanti, penso,si sia corrotto anche se non so come in quanto ho riacceso il computer circa un mese fa. Non voglio il prodotto finito ne voglio tediarvi e visto il codice sotto descritto certamente non sono in grado di scriverlo. Questo e quanto e ve lo dovevo.

    Salutissimi a tutti voi 

    Private Sub Comando88_Click()
    Dim Fd As FileDialog
    Set Fd = Application.FileDialog(msoFileDialogFolderPiker)
          With Fd
            .AllowMultiSelect = False
            .Title = "Per favore selezionare una cartella"
            If .Show = True Then
               Me.txtpath = .SelectedItems(1)
            Else
               Exit Sub
            End If
          End With
    Set Fd = Nothing
    End Sub
    Private Sub Comando87_Click()
    Dim Iniziale As String
    Dim Finale As String
    Dim copiafile As Integer
    Dim objfile As Object
    Dim Path As String
    Path = CurrentProject.Path
    Iniziale = CurrentDb.Name
    NomeFile = Right(CurrentDb.Name, Len(CurrentDb.Name) - InStrRev(CurrentDb.Name, "\"))
    If IsNull(txtpath.Value) = False Then
     Path = txtpath.Value
    End If
    Finale = Path & "\" & Format(Now(), "dd-mm") & " " & NomeFile
    
    copiafile = 0
    Set objfile = CreateObject("Scripting.FileSystemObject")
    copifile = objfile.CopyFile(Iniziale, Finale, True)
    Set objfile = Nothing
    End Sub
  • Re: Backup automatico

    Che errori ti escono …?
    Hai fatto un po di Debug per verificare se la valorizzazione delle variabili con i pèercorsi è corretta…?

    Private Sub Comando87_Click()
    	Dim Iniziale 	As String
    	Dim Finale 		As String
    	Dim copiafile 	As Integer
    	Dim objfile 	As Object
    	Dim Path 		As String
    	
    	Path = CurrentProject.Path
    	Iniziale = CurrentDb.Name
    	NomeFile = Right(CurrentDb.Name, Len(CurrentDb.Name) - InStrRev(CurrentDb.Name, "\"))
    	If Len(txtpath.Value & vbNullstring) = 0 Then
     		Path = txtpath.Value
    	End If
    	
    	Finale = Path & "\" & Format(Now(), "dd-mm") & " " & NomeFile
    
    	copiafile = 0
    	Set objfile = CreateObject("Scripting.FileSystemObject")
    	Debug.print Finale
    	Stop	'<----- da rimuovere alla fine
    	copifile = objfile.CopyFile(Iniziale, Finale, True)
    	Set objfile = Nothing
    End Sub

    Usa questo codice, ed apri la finestra immediata con CTRL+G, lancia la procedura di copia e verifica sotto se ottieni correttamente la stringa della destinazione…

    Tuttavia se il file è a solo uso personale… non fai prima a farlo a mano…?

    Vedi anche questo:

    https://www.iaccessworld.com/example-of-using-filesystemobject-fso/

  • Re: Backup automatico

    Alex ti ringrazio, ma non riesco a venire al dunque non sono preparato.Il file è ad uso personale e ogni tanto faccio la copia manualmente del db, ma il problema non è farlo ma ricordarsi di farlo. Comunque va bene cosi posso solo ringraziarti e ringraziare tutti gli appartenenti al forum che dedicano il loro tempo a noi profani, il mio piccolo db è sempre in evoluzione e senz'altro vi disturberò per altri imput.

    Un saluto a tutti voi 

  • Re: Backup automatico

    23/07/2024 - nerofumo ha scritto:


    NomeFile = Right(CurrentDb.Name, Len(CurrentDb.Name) - InStrRev(CurrentDb.Name, "\")) If IsNull(txtpath.Value) = False Then Path = txtpath.Value End If

    Da dove prendi Nomefile?

    Private Sub Comando87_Click()
    	Dim Iniziale 	As String
    	Dim Finale 		As String
    	Dim copiafile 	As Integer
    	Dim objfile 	As Object
    	Dim Path 		As String
    	Dim Nomefile.   As String
    	
    	Path = CurrentProject.Path
    	Iniziale = CurrentDb.Name
    	
    	NomeFile = Right(CurrentDb.Name, Len(CurrentDb.Name) - InStrRev(CurrentDb.Name, "\"))
    	If Len(txtpath.Value & vbNullstring) = 0 Then
     		Path = txtpath.Value
    	End If
    	
    	Finale = Path & "\" & Format(Now(), "dd-mm") & " " & NomeFile
    
    	copiafile = 0
    	Set objfile = CreateObject("Scripting.FileSystemObject")
    	copifile = objfile.CopyFile(Iniziale, Finale, True)
    	Set objfile = Nothing
    	
    	MsgBox "Backup completato!", vbInformation, "Backup"
    End sub
  • Re: Backup automatico

    Una Buonasera a tutti, guardando con attenzione i suggerimenti di Alex e Sihsandrea mi sono accorto che ho fatto molti errori di: distrazione, incompetenza e se volete aggiungere altro, voi potete…non mi offendo. praticamente ho inserito questo codice nella chiusura della maschera principale che resta sempre aperta fino a quando non chiudo il DB. Come già detto nel campo txtpact non posso inserire nulla in quanto mi

    manca il riferimento “Microsoft Office project 16.0 Object Library” citato nel mio messaggio del 23 lug 2024, 14:10 io ho il “Microsoft Office project 12.0 Object Library”  e il codice si blocca sulla riga “Dim Fd As FileDialog” del comando88 ma per adesso non mi pongo il problema vedrò in seguito leggerò in rete se vi è soluzione.

    Non posso far altro che ringraziarvi per il vostro aiuto e per la pazianza avuta posts RISOLTO

    SALUTISSIMI

    Private Sub Comando88_Click()
    Dim Fd As FileDialog
    Set Fd = Application.FileDialog(msoFileDialogFolderPiker)
          With Fd
            .AllowMultiSelect = False
            .Title = "Per favore selezionare una cartella"
            If .Show = True Then
               Me.txtpath = .SelectedItems(1)
            Else
               Exit Sub
            End If
          End With
    Set Fd = Nothing
    End Sub
    Private Sub Form_Close()
    Dim Iniziale As String
    Dim Finale As String
    Dim copiafile As Integer
    Dim objfile As Object
    Dim Path As String
    Dim NomeFile As String
    Path = CurrentProject.Path
    Iniziale = CurrentDb.Name
    NomeFile = Right(CurrentDb.Name, Len(CurrentDb.Name) - InStrRev(CurrentDb.Name, "\"))
    If IsNull(txtpath.Value) = False Then
     Path = txtpath.Value
    End If
    Finale = Path & "\" & Format(Now(), "dd-mm") & " " & NomeFile
    
    copiafile = 0
    Set objfile = CreateObject("Scripting.FileSystemObject")
    copifile = objfile.CopyFile(Iniziale, Finale, True)
    Set objfile = Nothing
  • Re: Backup automatico

    Non serve a nulla quel riferimento, toglilo…!!!!!

    Modifica in questo modo:

    Private Sub Comando88_Click()
    	Private mFileDialogFolderPicker=4
    	Dim Fd As Object
    	Set Fd = Application.FileDialog(mFileDialogFolderPicker)
          	With Fd
            	.AllowMultiSelect = False
            	.Title = "Per favore selezionare una cartella"
            	If .Show = True Then
               	Me.txtpath = .SelectedItems(1)
            	Else
               	Exit Sub
            	End If
          	End With
    	Set Fd = Nothing
    End Sub

    Poi modifica questa sotto perchè non va bene invocare 5 volte CurrentDb, e poi CopyFile di SystemObjecty è una Sub, leggendo la documentazione, non restituisce valori, oltretutto la chiami su una Sub di chiusura Form a cosa ti serrve in questo modo sapere cosa restituisce [copiafile] se poi non ci fai nulla…

    Private Sub Form_Close()
    	On Error Goto Error_Handler
    	Dim Iniziale 	As String
    	Dim Finale 		As String
    	Dim objfile 	As Object
    	Dim Path 		As String
    	
    	Set objfile = CreateObject("Scripting.FileSystemObject")
    	
    	Path = CurrentProject.Path
    	Iniziale = CurrentDb.Name
    	
    	If Len(txtpath.Value & vbNullstring) > 0 Then
    		Path = txtpath.Value
    		If Not objfile .FolderExists(Path) Then
    			Err.Raise 10001, "Form_Close.Backup", "Folder Not Exist"
    			' Non crearla in automatico in quanto non è possibile testare la correttezza del Path in modo certo...
    		End if
    	End If
    	
    	Finale = Path & "\" & Format(Now(), "dd-mm") & " " & Right(Iniziale , Len(Iniziale ) - InStrRev(Iniziale , "\"))
    	
    	objfile.CopyFile Iniziale, Finale, True
    	doevents
    	If objfile.fileExists(Finale) = False Then
    		Err.Raise 10002, "Form_Close.Backup", "BackUp Failed"
    	end if
    	Set objfile = Nothing
    Exit_Here:	
    	Exit Sub
    
    Error_Handler:
    	MsgBox Err.Number & " - " & Err.Description
    	Resume Exit_Here
    End Sub

    Studia quello che ho fatto inclusa la gestione errori…!!!

  • Re: Backup automatico

    Buonasera Alex, ho copiato il codice che mi hai scritto ma da due errori:

    Il primo sul comando88 con errore di sintassi

    Private mFileDialogFolderPicker=4

    Il secondo sulla chiusura della maschera sempre con errore di sintassi

    If Not objfile .FolderExists(Path) Then

    Il primo dovrebbe riguardare l'apertura della finestra di dialogo per selezionare la cartella

    il secondo sull'esistenza nel txtpath della cartella dove salvare il backup

    o sbaglio…….

  • Re: Backup automatico

    25/07/2024 - nerofumo ha scritto:


    Buonasera Alex, ho copiato il codice che mi hai scritto ma da due errori:

    Il primo sul comando88 con errore di sintassi

    Private mFileDialogFolderPicker=4

    Il secondo sulla chiusura della maschera sempre con errore di sintassi

    If Not objfile .FolderExists(Path) Then

    Il primo dovrebbe riguardare l'apertura della finestra di dialogo per selezionare la cartella

    il secondo sull'esistenza nel txtpath della cartella dove salvare il backup

    o sbaglio…….

    Il primo cambialo con :

    Dim mFileDialogFolderPicker=4

    Il secondo guarda bene che c'è uno spazio di troppo… [objfile] SPAZIO [.FolderExists(…)] 

  • Re: Backup automatico

    Buongiorno Alex, buongiorno a tutti per quanto riguarda lo spazio era quello ora esegue il backup, per quanto riguarda 

    Dim mFileDialogFolderPicker=4

    mi dà sempre l'identico errore, Alex provo con calma a risolvere, anche se ho seri dubbi, ma vorrei provare se non riesco vi disturberò in seguito.

    Mille grazie 

  • Re: Backup automatico

    Sono fuori allenamento con Access da qualche anno…

    Const mFileDialogFolderPicker As Long=4

    Dovrebbe andare.

  • Re: Backup automatico

    Certo che funziona, ma purtroppo posso solo ringraziarti ora passo alla fase di studio di quello che hai scritto e suggerito

    e vediamo ciò che riesco a fare

    Salutissimi Alex e salutissimi a tutti

    RISOLTO

Devi accedere o registrarti per scrivere nel forum
14 risposte