Ciao a tutti,
sto cercando di aggiungere una funzione di backup/ripristino database al mio programma. Tutto sembra funzionare ma ho un piccolo problema nel visualizzare all'utente la data a cui è stato riportato il database dopo il ripristino.
In pratica uso la seguente procedura: sono ammessi al massimo 5 backup. Al primo backup viene creato backup_1, al secondo backup_1 diventa backup_2 e il database viene copiato in backup_1, e così via. Quando ne ho 5 il quinto viene perso e gli altri scalano. Nel codice ho messo:
Private Sub BackupDatabaseToolStripMenuItem_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles BackupDatabaseToolStripMenuItem.Click
Dim risposta As MsgBoxResult
risposta = MsgBox("Stai per effettuare il backup del database. Procedere?", MsgBoxStyle.YesNo, "Confermare")
If risposta = MsgBoxResult.Yes Then
Dim origine As String = "golf.accdb"
If System.IO.File.Exists("backup_5.accdb") Then 'se esiste il quinto backup allora
System.IO.File.Delete("backup_5.accdb") 'elimino il vecchio backup_5
Rename("backup_4.accdb", "backup_5.accdb") 'scalo gli altri...
Rename("backup_3.accdb", "backup_4.accdb")
Rename("backup_2.accdb", "backup_3.accdb")
Rename("backup_1.accdb", "backup_2.accdb")
System.IO.File.Copy("golf.accdb", "backup_1.accdb") 'e copio il database in backup_1
ElseIf Not System.IO.File.Exists("backup_1.accdb") Then
System.IO.File.Copy("golf.accdb", "backup_1.accdb")
Else
For i As Byte = 1 To 5
If Not System.IO.File.Exists("backup_" & i & ".accdb") Then 'se uno dei 5 backup non esiste, scalo gli altri e copio il db in backup_1
For j As Int16 = i To 2 Step -1
Rename("backup_" & j - 1 & ".accdb", "backup_" & j & ".accdb")
Next
System.IO.File.Copy("golf.accdb", "backup_1.accdb", True)
Exit For
End If
Next
End If
MsgBox("Backup eseguito.", MsgBoxStyle.Information, "Conferma")
End If
End Sub
Private Sub RipristinaUltimoBackupToolStripMenuItem_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles RipristinaUltimoBackupToolStripMenuItem.Click
If Form3.modalita = "gestore" Then
Dim risposta As MsgBoxResult
risposta = MsgBox("Ripristinare l'ultimo backup del database?", MsgBoxStyle.YesNo, "Confermare")
If risposta = MsgBoxResult.Yes Then
Dim origine As String = "backup_1.accdb"
Dim destinazione As String = "golf.accdb"
If System.IO.File.Exists(origine) Then
System.IO.File.Copy(origine, destinazione, True)
'RIVEDERE DATA RIPRISTINO
MsgBox("Ripristino effettuato." & vbCr & "Il gestionale è stato riportato alla data " & System.IO.File.GetCreationTime("backup_1.accdb"), MsgBoxStyle.Information, "Conferma")
Else
MsgBox("Backup non trovato", MsgBoxStyle.Exclamation, "Errore")
End If
End If
Else
MsgBox("Per eseguire il ripristino del gestionale contattare un'amministratore del sistema", MsgBoxStyle.Exclamation, "Permesso negato")
End If
End Sub
Il problema nasce quando cerco di visualizzare all'utente la data alla quale ho ripristinato il db: se creo il backup_1 alle 19.20 e poi faccio un altro backup alle 19.30 quando ripristino mi aspetto di vedere 19.30 ma viene scritto comunque 19.20
Come mai?
PS. Non è un problema enorme ma sono curioso (e poi non vorrei che ci fossero problemi con i ripristini )