Sandro Bizioli


Chi sogna di giorno conosce molte cose che sfuggono a chi sogna soltanto di notte. (E.A.Poe)
Mappa

Compattare un database Access da Visual Basic

Ecco une sempio di come compattare un database Access attraverso Visual Basic.
Come prima cosa vanno aggiunti al progetto i riferimenti necessari, nel nostro caso la libreria Microsoft.DAO 3.6 Object Library.

Visual Basic .Net
Dopo aver creato un progetto, selezionare il riferimento dal menù Progetto->Aggiungi riferimenti e selezionare la tab denominata Com.
Nell'elenco individuare la libreria in questione.

VB6
Dal menù Progetto selezionare la voce Riferimenti e selezionare la libreria in questione.

La sintassi, una volta inserito il riferimento, è identica per entrambi i linguaggi:

Dim dbEN As New dao.DBEngine
dbEN.CompactDatabase("nomeFileOrigine", "nomeFileDestinazione")

Qui di seguito una semplice routine che, dato un database, lo compatta e ne crea una copia di backup.

Private Sub CompattaDB(ByVal nomeFile As String)
        Dim en As New dao.DBEngine
        Dim f As New IO.FileInfo(nomeFile)
  '
  ' Creo un file temporaneo nella directory temporanea del sistema
  '
        Dim tmp As String = IO.Path.Combine(My.Computer.FileSystem.SpecialDirectories.Temp, IO.Path.GetRandomFileName)
        Try
            '
            ' Creo il nuovo database compattato
            '
            en.CompactDatabase(nomeFile, tmp)
            '
            ' Effettuo la copia di backup del database d'origine
            '
            f.CopyTo(IO.Path.Combine(f.Directory.ToString, f.Name & ".bak"), True)
            '
            ' Sovrascrivo il file d'origine con il nuovo
            '
            Call IO.File.Copy(tmp, nomeFile, True)
            '
            ' Elimino il file temporaneo
            '
            IO.File.Delete(tmp)
        Catch ex As Exception
            MsgBox(String.Concat(ex.Message, Environment.NewLine, "Routine CompattaDB"))
        Finally
   '
   ' Se esiste ancora il file temporaneo lo elimino
   '
            If IO.File.Exists(tmp) Then IO.File.Delete(tmp)
        End Try
    End Function

Categoria: VB.Net
venerdì, 31 lug 2009 Ore. 23.41
Statistiche
  • Views Home Page: 111.134
  • Views Posts: 566.270
  • Views Gallerie: 115.193
  • n° Posts: 227
  • n° Commenti: 222
Copyright © 2002-2007 - Blogs 2.0
dotNetHell.it | Home Page Blogs
ASP.NET 2.0 Windows 2003