Problema autocompattazione

di fabionik2004 il
2 risposte

Ciao a tutti,

su un mio DB ho un contatore che ogni 20 aperture mi inserire l'opzione *autocompatta su chiusura* ed ha sempre funzionato.

Da qualche settimana, credo dopo un aggiornamento windows, quando chiudo il database e l'autocompattazione é selezionata, mi viene fuori una finestra che richiede di inserire una password e se non faccio annulla non riesco a chiudere il database. Chiaramente la spunta rimane sempre su “esegui autompattazione” perché non l'ha fatta, quindi devo toglierla manualmente.

Aggiungo che il mio database é protetto da una password all'apertura, ma inserendola quando viene fuori questa finestra mi da password errata.

Se tolgo la spunta su autocompattazione il database si chiude normalmente.

Ho provato a creare un database da 0, tutto ok per qualche giorno e dopo stesso problema.

Avete qualche idea?

Grazie

2 Risposte

  • Se protetto da PWD devi eseguire la compattazione aprendo l'applicativo in modo esclusivo dall'esterno ed inserire la PWD come prevede l'istruzione VBA CompactDatabase.

    Con l'impostazione dell'AutoCompact l'azione di inserimento PWD è manuale.

    https://learn.microsoft.com/en-us/office/client-developer/access/desktop-database-reference/dbengine-compactdatabase-method-dao

    Puoi predisporre per questa esigenza un file VBS con codice LateBinding di DAO che effettua questo processo e magari ti lascia il BackUp.

  • Grazie per le dritte, provo a dare un'occhiata al link, 

    ma si tratta di una novità? perché fino a qualche settimana fa ha sempre funzionato.

    l'esempio qui sotto si puo' eseguire a database aperto? per esempio all'apertura?

    Private Sub Command0_Click()
        
        Dim strSourcePath As String
        Dim strDestPath As String
        
        strSourcePath = "<path>\sourceDb.accdb"
        strDestPath = "<path>\destDb.accdb"
        
        DBEngine.CompactDatabase strSourcePath, strDestPath, dbLangGeneral & ";pwd=Access", dbVersion120, ";pwd=Access"
        
        Set CurrentDatabase = CurrentDb
        Set LinkedTableDef = CurrentDatabase.CreateTableDef 
        ("My Linked Table")
        LinkedTableDef.Connect = "MS Access;pwd=Access";database=" & strDestPath
        LinkedTableDef.RefreshLink
        
        
        MsgBox "Finished"
        
        End Sub 
Devi accedere o registrarti per scrivere nel forum
2 risposte