Condividi tramite

Compattare un DB diviso in BE E FE e farne una copia di Backup

Anonimo
2015-11-11T16:07:01+00:00

Buon pomeriggio a tutti, ho al necessità  di compattare un DB diviso e messo in rete. Ho seguito un vostro precedente consiglio ed ho fatto mio il codice sottoriportato.

Ho inserito i riferimenti DAO ma appena lanciato la sub da un pulsante di comando sulla maschera non accade  nulla, cosa non va.

Sub CompattaBE()

   'Autore: Riccardo Pozzi e Federico Luciani

On Error GoTo gestErr

   Dim backend As String

   Dim strSQL As String

   Dim rs As DAO.Recordset

   Dim risp As Integer

   Dim copia As String

   Dim msg As String

   strSQL = "SELECT Trim([Database]) AS DB " & _

            "FROM MSysObjects " & _

            "GROUP BY Trim([Database]), MSysObjects.Type " & _

            "HAVING (((MSysObjects.Type)=6));"

   Set rs = CurrentDb.OpenRecordset(strSQL)

   If rs.EOF And rs.BOF Then GoTo esci

   risp = MsgBox("Procedere con salvataggio e compattazione?",  _

      vbQuestion + vbYesNo)

   If risp <> vbYes Then Exit Sub

   DoCmd.Hourglass True

   DoCmd.SetWarnings False

   rs.MoveFirst

   msg = ""

   Do

       backend = rs![DB]

       msg = backend & vbCrLf & msg

       '*****************************

       ' La riga di codice che segue va usata solo con Access 97

       DBEngine.RepairDatabase backend  ho remmato questa riga come suggerito per versione superiore alla 97

       '*****************************

       DBEngine.CompactDatabase backend, backend & ".new"

       copia = Dir(backend & ".bak")

       If copia <> "" Then Kill backend & ".bak"

       Name backend As backend & ".bak"

       Name backend & ".new" As backend

       rs.MoveNext

   Loop Until rs.EOF

   MsgBox "Compattazione terminata per i seguenti DB:" & _

      vbCrLf & msg, vbExclamation

esci:

   rs.Close

   DoCmd.SetWarnings True

   DoCmd.Hourglass False

   Exit Sub

gestErr:

   MsgBox Err.Number & " - " & Err.Description

   GoTo esci

End Sub

Ciao Nicola.

Microsoft 365 e Office | Accesso | 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

Risposta accettata dall'autore della domanda

  1. Anonimo
    2015-11-15T06:42:41+00:00

    <citazione 13/11/2015 20:31:26>

    Desidererei fare un backup del Be e Fe ad un detreminato orario

    <\citazione>

    <citazione 14/11/2015 20:05:27>

    Mi sorge solo un dubbio , poichè il DB è diviso con la creazione guidata  di divisione del Db, il Fe come lo salvo, dato che mi dici di creare una cartella di destinazione ed una del Be?

    <\citazione>

    Del Fe non ti serve fare BackUp periodico.

    guardalo bene,

    Maschere, Report, Moduli, ecc

    Tutta roba sempre identica ........

    quello che veramente cambia nel Fe è il contenuto dei

    controlli ( per dirla brutalmente "quello che c'è scritto" )

    ma il contenuto dei controlli è di fatto memorizzato

    nel Be tramite il collegamento delle tabelle ........

    Pertanto si usa fare il Backup del solo Be,

    Mentre del Fe ti basta farne una copia UnaTantum

    solamente quando fai delle modifiche alla struttura degli oggetti contenuti

    Precisazione,  la copia UnaTantum del Fe la devi fare in

    formato  .mdb   .accdb    e non in formato  .mde   .accde

    .

    La risposta è stata utile?

    0 commenti Nessun commento

Risposta accettata dall'autore della domanda

  1. Anonimo
    2015-11-13T23:00:56+00:00

    <citazione>

    Cosa mi consigli di accontentarmi di questo codice per eseguire un Backup del DB oppure fare altro poichè il DB in rete che utilizzo contiene moltissimi dati sensibili

     </citazione>

    No,   Se l'obbiettivo finale è il BackUp allora quello che ci hai proposto all'inizio

    è assolutamente inadatto.

    quel codice è ottimo per la compattazione e per "prudenza" se dovesse andare

    qualcosa storto durante la compattazione esegue prima un BakUp

    Ma un vero BackUp come minimo deve avere 2 caratteristiche 

    1)

    Non deve essere salvato nella stessa cartella dei file di origine

    nè sullo stesso HardDisk, né sullo stesso PC, nè nello stesso locale 

    né nello stesso stabile

    2)

    Devi conservare più BackUp temporeali 

    Poi il piano di Backup è strettamente legato al contesto della attività. 

    Ci sono centinaia di tipologie di BackUp

    io personalmente uso dei file .bat che  ogni notte

    creano una nuova cartelle e ci copiano  dentro  quanto necesario

    poi queste cartelle vengono mantenute per 30 giorni quindi eliminate

    te ne metto un piccolo estratto  ( testato e funzionante ) qui sotto

    devi solamente definire nelle prime righe

    • la cartella di origine 
    • la cartella di destinazione
    • mettere il file .bat nelle operazioni pianificate di Windows 

    vedrai che ogni esecuzione ti si genera una cartella di nome

    GF01 GF02 GF03 ...... GF20 ........... GF30

    PS:  Nel mio gergo "ostrogoto"  GF20 significa il BakUp di 20 Giorni Fa

     Spero di non essere troppo OT con codice .bat

    Mancini

    REM   @echo OFF

    REM ____ la cartella di destinazione del Back Up  ________

    REM ___ Crea la cartella di destinazione e metti

    REM ___ il percorso qui sotto   SENZA \ FINALE

    set dddd=D:\Post2\1009\Dest

    REM ____ La cartella che contiene il Be   _______

    REM __ Qui sotto metti la cartella che contiene il Be

    REM __ SENZA \ FINALE

    set budb=D:\Post2\1009\Orig

    REM ____ Elimino la cartella GF30 ______________________________

    RD %dddd%\GF30 /S /Q

    REM ____ Rinomino a scalare le cartelle aumentando il GFnn ______

    REN %dddd%\GF29 GF30

    REN %dddd%\GF28 GF29

    REN %dddd%\GF27 GF28

    REN %dddd%\GF26 GF27

    REN %dddd%\GF25 GF26

    REN %dddd%\GF24 GF25

    REN %dddd%\GF23 GF24

    REN %dddd%\GF22 GF23

    REN %dddd%\GF21 GF22

    REN %dddd%\GF20 GF21

    REN %dddd%\GF19 GF20

    REN %dddd%\GF18 GF19

    REN %dddd%\GF17 GF18

    REN %dddd%\GF16 GF17

    REN %dddd%\GF15 GF16

    REN %dddd%\GF14 GF15

    REN %dddd%\GF13 GF14

    REN %dddd%\GF12 GF13

    REN %dddd%\GF11 GF12

    REN %dddd%\GF10 GF11

    REN %dddd%\GF09 GF10

    REN %dddd%\GF08 GF09

    REN %dddd%\GF07 GF08

    REN %dddd%\GF06 GF07

    REN %dddd%\GF05 GF06

    REN %dddd%\GF04 GF05

    REN %dddd%\GF03 GF04

    REN %dddd%\GF02 GF03

    REN %dddd%\GF01 GF02

    REM  Adesso non ho piu la cartella GF01

    REM ____ Creo una nuova cartella GF01 ___________________________

    MD %dddd%\GF01

    REM _______ Metto in GF01 il BackUp fresco

    ROBOCOPY %budb% %dddd%\GF01 /MIR /R:2

    REM    /R:2  significa che tenta solo 2 volte  ( default 1.000.000 )

    REM _____ Finito  :-))

    La risposta è stata utile?

    0 commenti Nessun commento

8 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2015-11-12T20:20:15+00:00

    ......... sulla maschera non accade  nulla, cosa non va. ........

    Mhhhh!!,

    a me sembra che funziona bene,  lo ho testato ed è andato al primo colpo

    senza nessun aggiustamento ( se non remmare quella riga )

    lo hai provato su un Fe ???

    hai controllato il relativo Be ???

    dovresti avere notato

    • nella cartella del Be un nuovo file  .bak
    • una diminuzione del peso del Be  ( Se appesantito )

                     

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2015-11-12T10:27:40+00:00

    Ciao CHARIS_S grazie innanzitutto per il tuo cortese intervento, sicuramente qualcuno mi risponderà sono certo.

    Ad oggi ho sempre avuto validissimo, competente e prezioso supporto dalla community.

    Comunque in base a quanto tu mi consigli ho postato il tutto su TechNet .

    Grazie Buona giornata.

    Ciao Nicola.

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2015-11-12T08:58:50+00:00

    Ciao nichicanta

    e benvenuto nella Community di Microsoft!

    Ci dispiace per il disagio che stai riscontrando. Ti invito di consultare il forum di TechNet dove trovi soluzioni relative alla tua problematica, oppure, porre la tua richiesta.

    Se ti è stato di aiuto fai sapere.

    Grazie e saluti!

    La risposta è stata utile?

    0 commenti Nessun commento