Jump to content
marlonwg

Compactar banco com Vb.net

Recommended Posts

marlonwg

Boas pessoal

Estou a tentar compactar um banco aberto tentei varias formas ja mas me geram erros porque fala que estou com o programa aberto e tudo mais....

o codigo e este que estou usando para access 2010

Sub Main()

        cx.desconectar() ' Fecha o banco de dados
        Dim jro As JetEngine
        jro = New JetEngine()
        Try
            jro.CompactDatabase("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Teste\Teste.accdb", "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Teste\Teste.accdb;

Jet OLEDB:Engine Type=5")
            Console.WriteLine(" Banco de dados foi compactado com sucesso.")
        Catch e As Exception
            MsgBox(e.Message)
            Console.WriteLine(" Erro ao compactar o Banco de dados.")
            Console.WriteLine(e.Message)
        End Try
    End Sub

 

1° Problema tenho que fechar o banco para compactar mas faço o fechamento em cima mas mesmo assim diz que esta aberto ou em uso

2° Problema tenho que Compactar com o banco aberto e depois criar um bd com o mesmo nome porque com esta minha função ele pede para trocar o nome do banco porque ja existe no local, se no final colocas Teste2.accdb ele vai mas nao quero isso quero que ele somente compacte de forma simples. se alguem souber de algo avise aguardo..

A outra coisa tenho tanbem um exemplo para fazer isso mas esta em VBA quem souber como converter isso para vb.net agradeco tb

Compactar Banco 2007 aberto.

No evento VBA ao pressionar de um botão...

Private Sub SeuBotão_Click()
Dim ws As Object
Set ws = CreateObject("WScript.shell")
ws.SendKeys "%AGO"
Set ws = Nothing
End Sub

 

Edited by marlonwg
Faltou dados

Eu mesmo

Share this post


Link to post
Share on other sites
Estuardo

Boa noite,

Dado o tempo que esta questão ainda este em aberto, é bem possível que já tenho resolvido o problema. Mas para os eventuais leitores a procura da resposta, quer dizer o seguinte:

1. Fechar a ligação a uma bd não faz com que possa ser compactada.

2. Não é possível compactar um bd aberta (pelo menos não se não foi aberta em modo exclusivo). O proprio Access fecha e abre a bd para executar esta operação.

3. A solução mais simples é abrir as opções da bd e marcar a opção "Compactar ao Sair"

Para situações onde seja preciso fazer "on demand"  pode interesar ver aquiaqui

Para a segunda questão:

A sintaxe é assim:

 SendKeys.SendWait("%AGO")

 

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.