COMPACTAR BANCO DE DADOS ACCESS
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?
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?
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
Esse aqui é um exemplo antigo que eu postei:
http://www.vbmania.com.br/pages/index.php?varModulo=Detalhe&varID=7769
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?
Seria melhor colocar a rotina para compactar a base de dados ao abrir o meu sistema ou ao fechar?
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)?
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)?
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
pra chamar de um [Ô]Call Compactar_Base()[Ô]
Testa ai nao tenho vb aki
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
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, [Ô]/[Ô]))
tenta isto
Vá em project / referenes e selecione Microsoft DAO 3.51 Object Library ( pode ser um mais atual)
e use este código.
[txt-color=#e80000]Importante[/txt-color]: salve seu banco em outro local antes de testar.
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.
deu o erro argumento invalido nessa linha:
como não uso senha no meu banco de dados entao mudei pwd=senha[Ô] para pwd=[Ô]
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=[Ô]
descullpe qual a versão do DAO, somente com o DAO 3.51 irá funcionar
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
Erro na linha:
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
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
Tópico encerrado , respostas não são mais permitidas