marlonwg Posted May 16, 2017 at 06:49 PM Report #604344 Posted May 16, 2017 at 06:49 PM (edited) 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 May 16, 2017 at 06:52 PM by marlonwg Faltou dados Eu mesmo
Estuardo Posted August 3, 2018 at 01:25 AM Report #611492 Posted August 3, 2018 at 01:25 AM 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 aqui e aqui Para a segunda questão: A sintaxe é assim: SendKeys.SendWait("%AGO")
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now