Problema autocompattazione

di il
2 risposte

Problema autocompattazione

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

  • Re: Problema autocompattazione

    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.

  • Re: Problema autocompattazione

    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