VB 2005 - Compactando e restaurando uma base de dados Access via DAO
Como eu faço para compactar e reparar um banco de dados Microsoft Access (MDB) usando ADO.NET ?
Nota: Só para lembrar como se fazia no VB6 leia o artigo : Compactando uma base de dados Access
Tenho uma má notícia para você : ADO.NET não da suporte a compactar e reparar um banco de dados Access .
Agora a boa notícia: Você pode realizar tal tarefa incluindo uma referência a biblioteca DAO360.DLL no seu projeto.
Nota: Se quiser compactar arquivos no VB 2005 leia o artigo: VB.NET 2005 - Compactando e descompactando arquivos
Agora vamos ao que interessa:
Abra o Visual Basic 2005 Express Edition e crie um novo projeto chamado backupDAO_Net.
Agora inclua uma referência a biblioteca Microsoft DAO 3.6 Object Library da seguinte forma:
Ao final do processo marque a opção Show All Files na janela Solution Explorer para visualizar na pasta References a referência DAO incluída no projeto. (figura 3.0)
Esta tudo pronto para criarmos o código para compactar e reparar uma base de dados Access via DAO.
No formulário padrão form1.vb inclua uma caixa de text e um botão de comando conforme o leiaute abaixo:
No evento Click do botão de comando inclua o seguinte código:
Private Sub
Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click If Not (txtOrigem.Text = String.Empty) And Not (txtDestino.Text = String.Empty) Then compactarReparar(txtOrigem.Text, txtDestino.Text) Else MsgBox("Informe o caminho e o nome de origem e destino.") End If End Sub |
Agora vamos definir o código da rotina para Reparar e compactar o arquivo MDB:
Private Sub
compactarReparar(ByVal origem As String, ByVal destino As
String) Dim db As DAO.DBEngine Dim novoNomeDestino As String Dim destinoCompactado Dim nomeSemExtensao As String = System.IO.Path.GetFileNameWithoutExtension(origem) destinoCompactado = destino & "\" & nomeSemExtensao Try novoNomeDestino = destino & "\" & nomeSemExtensao & Format(Now, "MMddyyyyHHmmss") & ".mdb" If File.Exists(novoNomeDestino) Then Kill(novoNomeDestino) End If file.(origem, novoNomeDestino) db = New DAO.DBEngine() If File.Exists(destinoCompactado) Then Kill(destinoCompactado) End If db.CompactDatabase(novoNomeDestino, destinoCompactado) MsgBox("Operação realizada com sucesso.") Catch ex As System.Exception MsgBox(ex.Message) End Try End Sub |
E pronto. Se você realmente estive precisando de algo parecido eu mostrei o caminho das pedras o resto é com você , então refine e incremente o código ajustando as suas necessidades.
Pegue o projeto completo aqui : arquivoIniNet.zip
Com VB.NET você pode , então vá...
José Carlos Macoratti