PROBLEMAS COMPACTAR BANCO ACCESS.

THIAGO.CC 28/08/2009 14:58:02
#321257
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
THIAGO.CC 31/08/2009 09:09:03
#321430
Ninguem tem alguma ideia de como proceder neste caso?

Obrigado
RCMRO 10/09/2009 07:21:40
#322452
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.
WEBMASTER 10/09/2009 10:18:08
#322467
Resposta escolhida
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


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
RCMRO 15/09/2009 12:53:18
#322939
E ai THIAGO,

O WEBMASTER deu a maior solução para vc... Não funcionou? é que o tópico continua aberto....
THIAGO.CC 15/09/2009 17:30:27
#322973
Fala ai pessoal,

A todos obrigados pelas respostas.

Thiago

Tópico encerrado , respostas não são mais permitidas