Newsgroup: it.comp.appl.access
Titolo: Copia di Backup

 
In un mio db applico la seguente routine per  salvare su supporto removibile
la cartella contenente il BE
Dim Fs As Object
Set Fs = CreateObject("Scripting.FileSystemObject")
Fs.copyfolder "C:\MioFolderDati", "E:\CopiaMioFolderDati"
Set Fs = Nothing
......
DoCmd.Close
e fino qui tutto funziona.
Il problema si presenta quando devo fare l'operazione inversa cioè
ricaricare
la cartella che andra a sostituire la cartella "MioFolderDati" esistente
Se l'operazione viene fatta manualmente con copia/incolla tutto funziona
mentre se lo faccio da Vb mi da un errore "Bookmark"
Comunque trovo strano che il problema Backup venga così poco trattato
sul newsgroup
Grazie per l'aiuto
Walter

 Walter
-- 
Roberto
-----------------------------------------------------
il Sito Comune di it.comp.appl.access
http://www.sitocomune.com
----------------------------------------------------

 ha scritto nel messaggio 
news:pGa5f.19297$Pe2.3...@twister2.libero.it...

*********************************Da Riaudo Marcello
Ritengo che la cosa più importante quando si crea un programma sia quello di 
fare la funzione di backup.
Io attualmente uso questa sequenza di Istruzioni ( grazie anche ad 
Alessandro Barldi ch emi ha dato alcuni consigli) per compattare e backup:
sul'evento chiusura  Procedura x access >= 2000
Private Sub ComandoChiusuraProcedura_Click()
On Error GoTo Err_Sostituire
    Dim retVal As Variant, strCmd As String, NomeMdb As String, DirDest As 
String
    DoCmd.RunCommand acCmdSaveRecord
    DirDest = "  C:\Insis.cop\"              ' Indirizzo Destinazione copia
    If GLOIdUtente = 0 Or GLOIdUtente = 3 Then
       K = DLookup("DimensioneDbase", "DatiGenerali") 'Valore Ultima 
Compattazione
       Y = Int(FileLen(CurrentDb().Name) / 1000)
       If K = 0 Then
          K = Y
          Set MioDB = CurrentDb()
          MYSQL = "UPDATE DatiGenerali SET DatiGenerali.DimensioneDbase = " 
& Y
          MioDB.Execute (MYSQL)
          MioDB.Close
       End If
       If K * 1.5 < Y Then
          'Richiedo la Compattazione quando il db cresce di una volta e 
mezzo
          MessaggioOK = "A T T E N Z I O N E   C O M P A T T A R E   " & 
Chr(10) & _
                        "U R G E N T E M E N T E   L A   P R O C E D U R A"
          DoCmd.OpenForm "CasellaSiNoRossa", , , , , acDialog 
'CasellaSiNoRossa maschera di selezione Si No
          If ControlloOK = "SI" Then GoTo Compatta
       End If
           'Copia su Computer C:............
            stringa = (CurrentDb().Name)
            stringa = Right(stringa, Len(stringa) - InStrRev(stringa, "\"))
            Strcriteria1 = "A" & Mid(Date, 7, Len(Date)) & "M" & Mid(Date, 
4, 2) & _
                           "G" & Mid(Date, 1, 2) & "T" & Time
            Strcriteria = Strcriteria1 & stringa
            strCmd = "Xcopy " & CurrentDb().Name & DirDest & Strcriteria
            retVal = Shell(strCmd, 1)
FineCopia:
'''---------------------------------------------------------------------------------------------
             DoCmd.Close
             DoCmd.Quit
Compatta:
         'Compatta Db
          Set MioDB = CurrentDb()
          MYSQL = "UPDATE DatiGenerali SET DatiGenerali.DimensioneDbase = 0"
          MioDB.Execute (MYSQL)
          MioDB.Close
          MsgBox "Fare Uscire Tutti Gli Utenti Collegati Alla Procedura. " & 
Chr(13) & _
                 "Fare la Copia Dopo Compattazione", vbCritical
          CommandBars("Menu Bar"). _
          Controls("Strumenti"). _
          Controls("Utilità database"). _
          Controls("Compatta e ripristina database..."). _
          accDoDefaultAction
          Exit Sub
    Else
       DoCmd.Close
       DoCmd.Quit
    End If
Exit_Sostituire:
    Exit Sub
Err_Sostituire:
    MsgBox Err.description
    Resume Exit_Sostituire
End Sub