ROTINA DE BACKUP
Boas tardes.
Estou brigando com uma rotina de backup da minha base de dados (access 7.0), projeto criado e desenvolvido em VB6... Eis a rotina (que consegui tempos atrás aqui mesmo no site) associada a um botão <Criar Cópia> no form principal:
Dim FSO As New FileSystemObject
Dim RetVal As String
RetVal = Dir([Ô]C:\Safe Database\Livros.mdb[Ô])
If RetVal = [Ô][Ô] Then MkDir [Ô]C:\Safe Database[Ô]
FSO.CopyFile [Ô]c:\Users\Manager\AppData\Local\VirtualStore\Program Files (x86)\Biblioteca\livros.mdb[Ô], [Ô]c:\Safe DataBase\[Ô], True
Ocorre o seguinte: na pasta <c:\users> consta que houve alteração/modificação da base de dados em determinado horário.
Na pasta <Safe DataBase>, a (presente) alteração não é gravada. A base de dados não reflete a alteração acima...
Alguém tem uma dica?
Estou brigando com uma rotina de backup da minha base de dados (access 7.0), projeto criado e desenvolvido em VB6... Eis a rotina (que consegui tempos atrás aqui mesmo no site) associada a um botão <Criar Cópia> no form principal:
Dim FSO As New FileSystemObject
Dim RetVal As String
RetVal = Dir([Ô]C:\Safe Database\Livros.mdb[Ô])
If RetVal = [Ô][Ô] Then MkDir [Ô]C:\Safe Database[Ô]
FSO.CopyFile [Ô]c:\Users\Manager\AppData\Local\VirtualStore\Program Files (x86)\Biblioteca\livros.mdb[Ô], [Ô]c:\Safe DataBase\[Ô], True
Ocorre o seguinte: na pasta <c:\users> consta que houve alteração/modificação da base de dados em determinado horário.
Na pasta <Safe DataBase>, a (presente) alteração não é gravada. A base de dados não reflete a alteração acima...
Alguém tem uma dica?
Bom, ás vezes, a operação com arquivos pela FSO não apresenta resultado tão rapidamente quanto o VB executa suas linhas. Com isso, ocorre eventualmente de uma operação [Ô]parecer[Ô] finalizada, quando, na verdade, está em andamento.
Ainda assim, a operação é normalmente efetuada.
No entanto, é sempre conveniente tratar erros prováveis / possÃveis, como a não-existência de pastas e/ou arquivos e ainda as permissões de acesso á essas mesmas pastas e/ou arquivos.
Teste a rotina abaixo no passo á passo (F8) e veja o que ocorre, ok ?
Se com isso sua dúvida for resolvida, você pode mudar a rotina para que fique mais genérica, de modo á receber os parâmetros de pasta de origem, de destino e o nome (ou escopo) dos arquivos.
Ainda assim, a operação é normalmente efetuada.
No entanto, é sempre conveniente tratar erros prováveis / possÃveis, como a não-existência de pastas e/ou arquivos e ainda as permissões de acesso á essas mesmas pastas e/ou arquivos.
Teste a rotina abaixo no passo á passo (F8) e veja o que ocorre, ok ?
Se com isso sua dúvida for resolvida, você pode mudar a rotina para que fique mais genérica, de modo á receber os parâmetros de pasta de origem, de destino e o nome (ou escopo) dos arquivos.
Private Sub GeraBackup()
On Error GoTo Hell:
Dim fso As New Scripting.FileSystemObject
Dim fdoDb As String
Dim fdtDb As String
Dim floDb As String
Dim fltDb As String
fdoDb = [Ô]C:\Users\Manager\AppData\Local\VirtualStore\Program Files (x86)\Biblioteca\[Ô]
fdtDb = [Ô]C:\Safe Database\[Ô]
floDb = [Ô]livros.mdb[Ô]
fltDb = [Ô]Livros.mdb[Ô]
If (fso.FolderExists(fdoDb)) = True Then
If (fso.FileExists(fdoDb & floDb)) = True Then
If (fso.FolderExists(fdtDb)) = False Then Call fso.CreateFolder(foldername)
If (fso.FolderExists(fdtDb)) = True Then
If (fso.FileExists(fdtDb & fltDb)) = True Then Call fso.DeleteFile(fdtDb & fltDb, True)
If (fso.FileExists(fdtDb & fltDb)) = False Then
Call fso.CopyFile((fdoDb & floDb), (fdtDb & fltDb), True)
Else
Call MsgBox([Ô]Uma cópia com o mesmo nome já existe e não pôde ser excluÃda.[Ô])
End If
Else
Call MsgBox([Ô]A pasta de destino dos dados não existe nem pôde ser criada.[Ô])
End If
Else
Call MsgBox([Ô]O arquivo de origem não foi encontrado.[Ô])
End If
Else
Call MsgBox([Ô]A pasta de origem dos dados não foi encontrada.[Ô])
End If
GoTo Sai:
Hell:
Call MsgBox(Err.Description)
Err.Clear
Sai:
End Sub
Consegui resolver por aqui, após testar inúmeras vezes a rotina. Embora o sistema automaticamente atualize a base de dados a cada modificação, uma chamada por menu <Atualizar a cópia de segurança> faz uma cópia idêntica à quela que reside na pasta <C;\Users\Manager...> acima, usando corretamente o <FileCopy>...
Obrigado pela ajuda e, principalmente, pelos métodos de procura de erros que vc passou.... Vou, com certeza, deles me utilizar.
Abraços.
Obrigado pela ajuda e, principalmente, pelos métodos de procura de erros que vc passou.... Vou, com certeza, deles me utilizar.
Abraços.
Tópico encerrado , respostas não são mais permitidas