PROBLEMAS COMPACTAR BANCO ACCESS.
Fala ai vbmaniacos,
Estou com o seguinte problema, tenho alguns banco de dados no Access na extenção MDB. Como ele é um pouco grande e a constantemente eu tenho que fazer a compactação do mesmo, bom ate ai sem problemas.
O problema é se alguém sabe o porque quando é compactado este banco de dados no OFFICE 2007 ele perde todos os indexes e a chave primaria das tabelas??
Eu fiz teste em outros banco de dados Access para testar e realmente é perdido os indexes e a chave primaria, alguém tem alguma noção de como evitar isso?
Infelizmente eu não tenho permissão para fazer a migração deste banco de dados para um melhor.
E eu so percebi este problema pq o sistema ficou começou a ficar muito lento.
Abraços
Thiago
Estou com o seguinte problema, tenho alguns banco de dados no Access na extenção MDB. Como ele é um pouco grande e a constantemente eu tenho que fazer a compactação do mesmo, bom ate ai sem problemas.
O problema é se alguém sabe o porque quando é compactado este banco de dados no OFFICE 2007 ele perde todos os indexes e a chave primaria das tabelas??
Eu fiz teste em outros banco de dados Access para testar e realmente é perdido os indexes e a chave primaria, alguém tem alguma noção de como evitar isso?
Infelizmente eu não tenho permissão para fazer a migração deste banco de dados para um melhor.
E eu so percebi este problema pq o sistema ficou começou a ficar muito lento.
Abraços
Thiago
Ninguem tem alguma ideia de como proceder neste caso?
Obrigado
Obrigado
Cara,
Esse é um mistério. Acessei o MSDN e o máximo que encontrei para um problema similar ao seu foi:
1. Falta de espaço em disco no momento da compactação
2. Problema de DELAY na rede quando compactado em computador remoto
3. Fazer todos os updates do ACCESS e do ADO (v.4.0 ou superior) para tentar solucionar o problema.
Se você tiver acesso, tenta ler o artigo abaixo para ver se ajuda:
http://support.microsoft.com/kb/283849/pt-br
Enfim, são as dicas que encontrei mas, nada de especÃfico com o seu problema.
Ajudinha [Ô]xinfrim[Ô] mas, quem sabe pode resolver?!?!?!
Boa sorte.
Esse é um mistério. Acessei o MSDN e o máximo que encontrei para um problema similar ao seu foi:
1. Falta de espaço em disco no momento da compactação
2. Problema de DELAY na rede quando compactado em computador remoto
3. Fazer todos os updates do ACCESS e do ADO (v.4.0 ou superior) para tentar solucionar o problema.
Se você tiver acesso, tenta ler o artigo abaixo para ver se ajuda:
http://support.microsoft.com/kb/283849/pt-br
Enfim, são as dicas que encontrei mas, nada de especÃfico com o seu problema.
Ajudinha [Ô]xinfrim[Ô] mas, quem sabe pode resolver?!?!?!
Boa sorte.
Thiago,
Eu montei um vbscript que eh criado via codigo pelo meu access (mexo nele diretamente)
Novamente, esta função é chamada de dentro do banco (ou seja, eu abro o banco e chamo isto aqui em uma macro, pode ser em autoexec ou qualquer outra).
Faca um teste e veja se desta maneira funciona, pois ele chama a Dao.DBEngine e foge um pouco do padrao do Office acredito eu, pois estamos trabalhando a nivel de objeto
Eu montei um vbscript que eh criado via codigo pelo meu access (mexo nele diretamente)
Novamente, esta função é chamada de dentro do banco (ou seja, eu abro o banco e chamo isto aqui em uma macro, pode ser em autoexec ou qualquer outra).
Faca um teste e veja se desta maneira funciona, pois ele chama a Dao.DBEngine e foge um pouco do padrao do Office acredito eu, pois estamos trabalhando a nivel de objeto
Public Function Compactar_Base()
Dim PASTA As String
Dim DB1 As String
Dim VBS As String
Dim L As Long
PASTA = Mid(CurrentDb.Name, 1, InStrRev(CurrentDb.Name, [Ô]\[Ô]))
DB1 = PASTA & [Ô]db1.mdb[Ô]
VBS = PASTA & [Ô]compactar.vbs[Ô]
If Dir(DB1) <> [Ô][Ô] Then Kill DB1
If Dir(VBS) <> [Ô][Ô] Then Kill VBS
L = FreeFile
Open VBS For Output As #L
Print #L, [Ô][ô]Criado automaticamente em [Ô] & Now
Print #L, [Ô]Dim objScript[Ô]
Print #L, [Ô]Dim objDAO[Ô]
Print #L, [Ô]Dim strPathToMDB[Ô]
Print #L, [Ô]Dim strMsg[Ô]
Print #L, [Ô][Ô]
Print #L, [Ô][Ô]
Print #L, [Ô] WScript.sleep 1000[Ô]
Print #L, [Ô] strPathToMDB = [Ô] & Chr(34) & CurrentDb.Name & Chr(34)
Print #L, [Ô] strTempDB = [Ô] & Chr(34) & DB1 & Chr(34)
Print #L, [Ô] Set objDAO = CreateObject([Ô] & Chr(34) & [Ô]DAO.DBEngine.36[Ô] & Chr(34) & [Ô])[Ô]
Print #L, [Ô] objDAO.CompactDatabase strPathToMDB, strTempDB[Ô]
Print #L, [Ô][Ô]
Print #L, [Ô][Ô]
Print #L, [Ô] If Err.Number > 0 Then[Ô]
Print #L, [Ô] strMsg = [Ô] & Chr(34) & [Ô]Ocorreu o seguinte erro no processo de compactacao:[Ô] & Chr(34) & [Ô] & Err.Description[Ô]
Print #L, [Ô] msgbox strMsg[Ô]
Print #L, [Ô] Else[Ô]
Print #L, [Ô] Set objScript = CreateObject([Ô] & Chr(34) & [Ô]Scripting.FileSystemObject[Ô] & Chr(34) & [Ô])[Ô]
Print #L, [Ô] objScript.CopyFile strTempDB, strPathToMDB , True[Ô]
Print #L, [Ô] objScript.DeleteFile strTempDB[Ô]
Print #L, [Ô] End If[Ô]
Print #L, [Ô][Ô]
Print #L, [Ô][Ô]
Print #L, [Ô]objScript.DeleteFile [Ô] & Chr(34) & VBS & Chr(34)
Print #L, [Ô]Set objDAO = Nothing[Ô]
Print #L, [Ô]Set objScript = Nothing[Ô]
Print #L, [Ô][Ô]
Print #L, [Ô][Ô]
Print #L, [Ô]WScript.sleep 1000[Ô]
Print #L, [Ô][Ô]
Print #L, [Ô]Dim objShell[Ô]
Print #L, [Ô]Set objShell = CreateObject([Ô] & Chr(34) & [Ô]WScript.Shell[Ô] & Chr(34) & [Ô])[Ô]
Print #L, [Ô]objShell.Run [Ô] & Chr(34) & CurrentDb.Name & Chr(34) & [Ô], 1[Ô]
Print #L, [Ô]Set objShell = nothing[Ô]
Print #L, [Ô][Ô]
Print #L, [Ô]msgbox [Ô] & Chr(34) & [Ô]Compactacao concluida com sucesso ![Ô] & Chr(34) & [Ô],48[Ô]
Close #L
Shell [Ô]wscript [Ô] & VBS, vbHide
Application.Quit acQuitSaveAll
End Function
E ai THIAGO,
O WEBMASTER deu a maior solução para vc... Não funcionou? é que o tópico continua aberto....
O WEBMASTER deu a maior solução para vc... Não funcionou? é que o tópico continua aberto....
Fala ai pessoal,
A todos obrigados pelas respostas.
Thiago
A todos obrigados pelas respostas.
Thiago
Tópico encerrado , respostas não são mais permitidas