COMPACTAR DB.
Olá!
Estou com o seguinte problema, preciso compactar um banco de dados access usando ado, criei uma função que faz isso, mas o banco depois de compactado simplesmente da erro e não abre mais.
O erro que ocorre qdo tento abrir é o seguinte: "Unrecognized database format."
Estou usando access 97 e a função que estou usando é a seguinte:
[/c]
Já tentei reparar o banco mais acontece o mesmo erro que postei acima.
Preciso resolver isso logo, quero um jeito que permita que o banco seja aberto depois...
Aguardo respostas, obrigado.
Estou com o seguinte problema, preciso compactar um banco de dados access usando ado, criei uma função que faz isso, mas o banco depois de compactado simplesmente da erro e não abre mais.
O erro que ocorre qdo tento abrir é o seguinte: "Unrecognized database format."
Estou usando access 97 e a função que estou usando é a seguinte:
'Compacta banco de dados, para chamar somente se o banco de dados estiver fechado.
'Tem que declarar a utilização da referencia: Microsoft Jet and Replication objects 2.6 Library.
[c]Public Function SIS_Conexao_Compactar_DB(ByVal DB_ORIGEM As String, ByVal DB_DESTINO As String, Optional SENHA As String) As Boolean
On Error GoTo Trata_Erros
Dim JE As JetEngine
Set JE = New JetEngine
'Descobre se o arquivo destino existe...
If Not Dir$(DB_DESTINO) = vbNullString Then
'Se existe, deletamos
Kill DB_DESTINO
End If
If Trim(SENHA) = vbNullString Then
'Compacta BD sem senha.
JE.CompactDatabase "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & DB_ORIGEM & ";", _
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & DB_DESTINO & ";Jet.OLEDB:Engine Type = 5;"
Else
'Compacta BD com senha.
JE.CompactDatabase "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & DB_ORIGEM & ";Jet OLEDB:Database Password=" & SENHA, _
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & DB_DESTINO & ";Jet.OLEDB:Engine Type = 4;"
End If
'Este "Engine Type" no final indica a versão do Access que está
'sendo usada. Veja os valores e as versões correspondentes:
'5 (Defaut) para Access 2000
'4 para Access 97
'3 para Access 95/6
'2 para Access 2
'1 para Access 1
SIS_Conexao_Compactar_DB = True
Set JE = Nothing
Exit Function
Trata_Erros:
SIS_Conexao_Compactar_DB = False
Set JE = Nothing
End Function
[/c]
Já tentei reparar o banco mais acontece o mesmo erro que postei acima.
Preciso resolver isso logo, quero um jeito que permita que o banco seja aberto depois...
Aguardo respostas, obrigado.
Será que ninguém aqui já compactou um db access usando ado???
Ou taum com preguiça de ler????
No aguardo meu povo!
Abraço.
Ou taum com preguiça de ler????
No aguardo meu povo!
Abraço.
Tente isso companheiro;
Ao invés de JE as JetEngine >> JE as jro.JetEngine;
e então:
CNString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
Origem = {caminho da base}
Destino = Left({caminho da base}, Len({caminho da base}) - {qtd de caracteres do nome da base}) & "Temp.mdb" 'isso é para gerar um arquivo temporário no mesmo local da base.
CNP.CompactDatabase CNString & Origem, CNString & Destino
FileCopy Destino, Origem
Kill Destino
Ao invés de JE as JetEngine >> JE as jro.JetEngine;
e então:
CNString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
Origem = {caminho da base}
Destino = Left({caminho da base}, Len({caminho da base}) - {qtd de caracteres do nome da base}) & "Temp.mdb" 'isso é para gerar um arquivo temporário no mesmo local da base.
CNP.CompactDatabase CNString & Origem, CNString & Destino
FileCopy Destino, Origem
Kill Destino
CORREÇÂO!!
no seu caso, onde se lê:
CNP.CompactDatabase CNString & Origem, CNString & Destino
entende-se:
je.CompactDatabase CNString & Origem, CNString & Destino
no seu caso, onde se lê:
CNP.CompactDatabase CNString & Origem, CNString & Destino
entende-se:
je.CompactDatabase CNString & Origem, CNString & Destino
Pode crer...
Agora funcionou....
Obrigado!
Agora funcionou....
Obrigado!
Tópico encerrado , respostas não são mais permitidas