Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it L'avatar di Rickycast
    Registrato dal
    Apr 2007
    residenza
    CHIERI (TO)
    Messaggi
    246

    Verificare che la funzione "CompactDatabase" abbia terminato la compattazione

    In una mia procedura, la funzione "MioEngine.CompactDatabase(DB_UNO, DB_DUE,)" spesso genera errori, specialmente su PC lenti. Questa funzione deve compattare un DB di Access 2007. Ho l'impressione che il sistema passi alla stringa succassiva senza che la compattazione sia terminata. Dovrei scrivere una procedura che effettui la compattazione ma che non proceda oltre se non quando ha terminato, solo che non so da dove cominciare. Qualcuno ha qualche idea?
    Il codice attuale è banalmente questo:
    codice:
                Dim MioEngine As New Microsoft.Office.Interop.Access.Dao.DBEngine
    
                ChiudiDB(DB_UNO)  'Mia procedura che chiude i DB
    
                MioEngine.CompactDatabase(DB_UNO, DB_DUE,)
    
                ChiudiDB(DB_UNO)
    
                ChiudiDB(DB_DUE)
    
                File.Copy(DB_DUE, DB_UNO overwrite:=True)

  2. #2
    Utente di HTML.it
    Registrato dal
    Jun 2006
    Messaggi
    87

    compattazione db

    Per compattare il db devi fare:
    Dim jro As JRO.JetEngine
    jro = New JRO.JetEngine
    jro.CompactDatabase("Provider=Microsoft.ACE.OLEDB. 12.0;Data Source=C:\Aziendale 2015\Aziendale 2015.mdb;Jet OLEDB:Engine Type=5", _
    "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Aziendale 2015\Aziendale 2015 compact.mdb;Jet OLEDB:Engine Type=5")
    My.Computer.FileSystem.DeleteFile("C:\Aziendale 2015\Aziendale 2015.mdb")
    My.Computer.FileSystem.RenameFile("C:\Aziendale 2015\Aziendale 2015 compact.mdb", "Aziendale 2015.mdb")
    Nella cartella di debug devi avere i seguenti file:

    Interop.ADODB.dll
    Iterop.DAO.dll
    Interop.JRO.dll

  3. #3
    Utente di HTML.it L'avatar di Rickycast
    Registrato dal
    Apr 2007
    residenza
    CHIERI (TO)
    Messaggi
    246
    Grazie. Tu però ti riferisci a DB di Access precedenti ad Access 2007, che ha come estensione .accdb e non .mdb
    Se non sbaglio per i DB .accdb occorre il riferimento a
    Microsoft.Office.Interop.Access.Dao.DBEngine

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2021 vBulletin Solutions, Inc. All rights reserved.