COMPACTAR BANCO DE DADOS ACCESS

WEBIER 12/12/2010 10:34:31
#359384
Estou com um programa de um mini-supermercado....

Estava acontecendo algo estranho por lah... de uma hora para outra a aplicação ficava lenta... travava... fechava sem aviso...

Olhei 500 vezes as linhas de código e nao via nada errado... ai deu uma olha no banco de dados... tava em 87mb... ai abrir o Access, fui no menu FERRAMENTAS depois UTILITARIOS DE BANCO DE DADOS e depois COMPACTAR BANCO DE DADOS...

ai o banco de dados volta a ter seu 9mb... e não deu mais problema...

apos uma semana o mesmo problema e a mesma solução...

Existe alguma forma de fazer isso pelo vb6?
outra coisa, lá tem 2 terminais.... se eu for compactar o banco de dados e 1 dos terminais estiverem usando a base de dados, vai dar problema?
Seria melhor colocar a rotina para compactar a base de dados ao abrir o meu sistema ou ao fechar?
WEBMASTER 12/12/2010 10:54:13
#359386
Tem sim, use o objeto DAO e execute o compact database.

Esse aqui é um exemplo antigo que eu postei:
http://www.vbmania.com.br/pages/index.php?varModulo=Detalhe&varID=7769
WEBIER 12/12/2010 12:38:10
#359398
outra coisa, lá tem 2 terminais.... se eu for compactar o banco de dados e 1 dos terminais estiverem usando a base de dados, vai dar problema?
Seria melhor colocar a rotina para compactar a base de dados ao abrir o meu sistema ou ao fechar?
WEBIER 12/12/2010 13:33:52
#359399
Desculpe a minha falta de conhecimento, mas....


Nesse endereço que vc me passou, ensina a fazer um script dentro do access e chamar ele no vb... é isso?

como seria isso passo-a-passo(onde coloco cada coisa e como e onde eu chamo)?
RODRIGOFERRO 12/12/2010 13:40:19
#359400
isso é uma function podes colocar em um form ou declarar como Public e usar em um modulo.

pra chamar de um [Ô]Call Compactar_Base()[Ô]

Testa ai nao tenho vb aki
WEBIER 12/12/2010 15:54:56
#359404
Acabei de testar...

Coloquei a função Compactar_Base no modulo.... fui no form, coloquei um botão e coloquei Call Compactar_Base

quando executo dar o erro:
Variavel não definida, ai quando debugo ele seleciona
CurrentDb 
da linha:
PASTA = Mid(CurrentDb.Name, 1, InStrRev(CurrentDb.Name, [Ô]/[Ô]))
MARCELO.TREZE 12/12/2010 16:07:28
#359405
Resposta escolhida
tenta isto

Vá em project / referenes e selecione Microsoft DAO 3.51 Object Library ( pode ser um mais atual)

e use este código.

Screen.MousePointer = 11
DBEngine.RepairDatabase App.Path & [Ô]Dados.Mdb[Ô]
If Dir(App.Path & [Ô]Dados2.Mdb[Ô]) <> [Ô][Ô] Then Kill App.Path & [Ô]Dados2.Mdb[Ô] [txt-color=#007100][ô]Verifica se o arquivo existe, e deleta[/txt-color]
DBEngine.CompactDatabase App.Path & [Ô]Dados.Mdb[Ô], App.Path & [Ô]Dados2.Mdb[Ô], dbLangGeneral & [Ô]; pwd=senha[Ô], , [Ô]; pwd=senha[Ô][txt-color=#007100] [ô]cria o arquivo compactado e mantem senha[/txt-color]
Kill App.Path & [Ô]Dados.Mdb[Ô][txt-color=#007100] [ô]deleta o arquivo antigo[/txt-color]
FileCopy App.Path & [Ô]Dados2.Mdb[Ô], App.Path & [Ô]Dados.Mdb[Ô][txt-color=#007100] [ô]efetua a cópia do novo para o antigo[/txt-color]
Kill App.Path & [Ô]Dados2.Mdb[Ô] [txt-color=#007100][ô]deleta o arquivo novo[/txt-color]
Screen.MousePointer = 0


[txt-color=#e80000]Importante[/txt-color]: salve seu banco em outro local antes de testar.
WEBIER 12/12/2010 16:54:35
#359407
deu o erro argumento invalido nessa linha:
DBEngine.CompactDatabase App.Path & [Ô]Dados.Mdb[Ô], App.Path & [Ô]Dados2.Mdb[Ô], dbLangGeneral & [Ô]; pwd=senha[Ô], , [Ô]; pwd=senha[Ô]


como não uso senha no meu banco de dados entao mudei pwd=senha[Ô] para pwd=[Ô]
MARCELO.TREZE 12/12/2010 17:25:07
#359411
descullpe qual a versão do DAO, somente com o DAO 3.51 irá funcionar
MARCELO.TREZE 12/12/2010 17:32:18
#359413
veja testado aqui

Private Sub Command1_Click()
Dim Caminho As String, Caminho2 As String
Caminho = [Ô]C:\Documents and Settings\Nova pasta\bolao.mdb[Ô]
Caminho2 = [Ô]C:\Documents and Settings\Nova pasta\bolao2.mdb[Ô]
DBEngine.RepairDatabase Caminho

If Dir(Caminho2) <> [Ô][Ô] Then Kill Caminho2[txt-color=#007100] [ô]Verifica se o arquivo existe, e deleta[/txt-color]
DBEngine.CompactDatabase Caminho, Caminho2, dbLangGeneral[txt-color=#007100] [ô]cria o arquivo compactado e mantem senha[/txt-color]
Kill Caminho [txt-color=#007100][ô]deleta o arquivo antigo[/txt-color]
FileCopy Caminho2, Caminho [txt-color=#007100][ô]efetua a cópia do novo para o antigo[/txt-color]
Kill Caminho2[txt-color=#007100] [ô]deleta o arquivo novo[/txt-color]End Sub
WEBIER 12/12/2010 19:08:20
#359416
Erro na linha:
DBEngine.CompactDatabase Caminho, Caminho2, dbLangGeneral 


vc não tem permissão de leitura.

usa DAO 3.51
e o banco de dados nao tem senha e tb nao é somente leitura
Página 1 de 2 [13 registro(s)]
Tópico encerrado , respostas não são mais permitidas