Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

marlonwg

Compactar banco com Vb.net

Mensagens Recomendadas

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

 

Editado por marlonwg
Faltou dados

Eu mesmo

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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")

 

 

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.