COPIA DE ARQUIVOS
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á...
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á...
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
'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
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?
Outra... qual o tipo de SISTEMA operacional?
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
???????????
é 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
???????????
nao...usa :
cnn.close
set cnn=nothing
cnn.close
set cnn=nothing
Tópico encerrado , respostas não são mais permitidas