COPIA DE ARQUIVOS

USUARIO.EXCLUIDOS 17/01/2005 08:38:51
#61319
olá amigos do vbmania....
bem eu sou iniciante em vb e estou montando o meu primeiro Sistema
e estou precisando de uma ajuda dos mais experientes...
estou usando este código para fazer um backup de um arquivo do Access
com o nome bdProjeto.mdb

strNome = "backup.bkp"
strBanco = "bdProjeto.mdb"
strPastaDestino = dirPasta.Path

If (Right(strPataDestino, 1) <> "\") Then
strPastaDestino = strPastaDestino & "\"
End If

FileCopy strBanco, strPastaDestino & strNome

MsgBox "Backup realizado com Sucesso!"

onde a variavel strPastaDestino guarda uma pasta localizada em um
objeto DirListBox, é um backup bem simples onde o sistema faz um copia
do arquivo do access com o nome backup.bkp para um lugar indicado pelo usuário e boa...

bem oque está acontecendo, toda vez em que eu inicio o sistema, e vou direto para o backup ou a
restauração(que é mesmo codigo do backup só que inversso)
e tento realizar uma destas tarefas, o sistema faz uma copia do arquivo .mdb com sucesso
... depois se eu crio ou altero ou excluo qualquer registro do sistema,
e tento fazer backup ou a restauração novamente, ele me da o seguinte erro:

Run-time erro '70':
Permission denied

depois deste erro, o o sistema é fechado!!!!
... não sei pq acontece isso??????????
Alguém sabe se está faltando alguma linha que impessa este erro, ou se o codigo
está errado...???
bem se alguém souber uma solução para esse problema,
me ajuda por favor...

grato desde já...
USUARIO.EXCLUIDOS 17/01/2005 08:49:46
#61321
o erro esta acontecendo porque o banco de dados esta sendo acessado por algum usuario(esta aberto) antes verifique se o banco esta aberto e se estiver feche - o para depois fazer a copia
'Declara variaveis para armazenar nome do banco enquanto este estiver fechado

Dim NomedoBanco As String 'nome do banco

Dim Destino As String 'destino da copia


On Error GoTo deuerro 'trata erro


NomedoBanco = vgDb.Name

Destino = NOMEDODESTINO 'substitua NOMEDODESTINO pelo caminho ou apelido de campo desejado

If QtForms = 0 Then 'verifica se existem tabelas abertas

FechaBancoDeDados 'fecha o banco de dados para nao gerar erro de Run-time 70

If Existe(Destino) Then 'verifica existancia de arquivo

If MsgBox("O arquivo " & Destino & " ja existe, deseja sobrescreve-lo?", _

vbYesNo + vbQuestion, vgAtencao) = vbNo Then 'pergunta se usuario quer sobrescrever

GoTo abrebanco 'se nao quiser, abre banco e sai da rotina

End If

End If

Call FileCopy(NomedoBanco, Destino) 'copia arquivos

GoTo abrebanco 'abre banco e sai da rotina

Else

Err.Number = 70 'Se existe tabela aberta força erro 70

GoTo deuerro

End If

GoTo abrebanco

deuerro: 'trata erro

If Err.Number = 70 Then

MsgBox "Nao foi possivel copiar o banco de dados!" & vbCrLf & "Feche todas as tabelas e certifique se existem usuarios acessando a aplicação!", vbCritical, "Usuarios acessando o banco de dados"

Else

MsgBox "Nao foi possivel copiar o banco de dados! " & vbCrLf & "Erro indeterminado!", vbCritical, "Erro indeterminado copiando arquivo"

End If

abrebanco:

AbreBancoDeDados
USUARIO.EXCLUIDOS 17/01/2005 08:51:40
#61322
Resposta escolhida
Talvez, quando você tentou RESTAURAR o MDB, de alguma forma ele estava em uso, (alguma conexao aberta e etc).
Outra... qual o tipo de SISTEMA operacional?
USUARIO.EXCLUIDOS 17/01/2005 08:54:47
#61324
o sistema operacional que está sendo usado
é o windows xp professional

viu.. tipo se eu for fazer uma verificação pra fechar o banco
o codigo seria este:::

if cnn.state=AdStateOpen then
cnn.close
end if

???????????

WEBMASTER 17/01/2005 09:07:07
#61327
nao...usa :

cnn.close
set cnn=nothing
Tópico encerrado , respostas não são mais permitidas