VB6 - Backup com FileSystemObject
Este artigo apresenta uma rotina simples para efetuar cópia de segurança de seu arquivo .MDB usa o objeto FileSystemObjec.
O FileSystemObject foi um grande avanço no Visual Basic 6 sobre a versão anterior pois apresenta um modelo de objetos para operações com arquivos.
Para ter acesso ao FileSystemObject o seu projeto tem que fazer referência a Microsoft Scripting RunTime.
O objetivo deste artigo não é entrar em detalhes sobre o FileSystemObject, isto já foi feito nos artigos :
O projeto deste artigo usa dois formulário : um formulário MDI(Mdi_backup) que é o formulário principal e apresenta o menu com uma opção para realizar o backup, e , o formulário(frm_backup) onde o backup é feito.
Inicie um novo projeto no VB6 do tipo StandardEXE e inclua um
formulário MDI no menu Project->Add MDI Form
Inclua também um modulo no projeto no menu Project->Add
Module
Inclua o módulo o seguinte código :
Dim conn As ADODB.Connection Sub main() Set conn = New ADODB.Connection conn.CursorLocation = adUseClient conn.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\Macoratti.mdb;Jet OLEDB:Database Password=Library;" Load Mdi_backup Mdi_backup.Show End Sub |
O código apenas define a rotina Sub Main onde a conexão com o banco de dados é aberta e o formulário principal é carregado.
A seguir inclua um formulário que será usado como interface para o backup.
No formulário MDI inclua um menu usando o Menu Editor (CTRL+E) com uma opção Principal chamada Arquivo e uma sub-opção chamada Cópia de Segurança. (Abaixo a figura do formulário MDI com o menu e os arquivos do projeto)
No evento Click da opção do Menu mnuBackup inclua o código que irá chamar o formulário de backup.
Private Sub
mnuBackup_Click() Load Frm_backup Frm_backup.Show End Sub |
Vamos criar a interface para o formulário de backup. Para isto vamos usar os seguintes controles:
O layout do formulário é dado a seguir:
Agora inclua o código abaixo no formulário frm_backup:
'incluindo uma referência a microsoft script library para usar o filesystemobject Dim Fsys As New FileSystemObject Dim arquivoBackup As File Private Sub cmdCancela_Click() Unload Me End Sub Private Sub cmdsalva_click() On Error GoTo trata_erro cmdSalva.Enabled = False lbl_Status.Caption = "Por favor aguarde , Backup em operação..." 'define as variaveis para o backup Dim Destino As String Dim Origem As String Dim DataAtual, HoraAtual As String 'formata da hora e a data DataAtual = Format$(Now, "dd, mmm, yyyy") HoraAtual = Format$(Now, "hh:mm:ss AM/PM") 'obtem o destino e a origem Destino = File1.Path & "\" & "ArquivoBackup.mdb" Origem = App.Path & "\Macoratti.mdb" 'retorna um objeto File associado ao arquivo Set arquivoBackup = Fsys.GetFile(Destino) 'define o atributo do arquivo como compressed arquivoBackup.Attributes = Compressed 'Usa o FileSystemObject para efetuar a copia do arquivo Fsys.CopyFile Origem, Destino, True 'salva informações no registro do backup atual SaveSetting App.Title, "Settings", "BackupPath", Destino SaveSetting App.Title, "Settings", "BackupDate", DataAtual SaveSetting App.Title, "Settings", "BackupTime", HoraAtual lbl_Status.Caption = "Backup realizado com sucesso." cmdSalva.Enabled = True MsgBox "Todos os dados foram Copiados com Sucesso", vbInformation, "Backup" Unload Me Exit Sub trata_erro: If Err.Number = 53 Then MsgBox " Erro no. " & Err.Number & " - Arquivo -> " & Destino & " , Não Encontrado." Else MsgBox Err.Number & " - " & Err.Description End If End Sub Private Sub Drive1_Change() Dir1.Path = Drive1.Drive End Sub Private Sub Dir1_Change() File1.Path = Dir1.Path End Sub Private Sub Form_Load() 'define as variáveis Dim ultimoDestino As String Dim ultimaData As String Dim ultimaHora As String File1.Visible = False 'posiciona o formulário Me.Top = 50 Me.Left = 50 'le o registro para obter valores armazenados ultimoDestino = GetSetting(App.Title, "Settings", "BackupPath") ultimaData = GetSetting(App.Title, "Settings", "BackupDate") ultimaHora = GetSetting(App.Title, "Settings", "BackupTime") lbl_Status.Caption = "Selecione o caminho de destino e pressione o botão : Inicia Backup" If ultimoDestino = "" Then lbl_destino.Caption = "Nenhum backup feito anteriormente" lbl_ultimaData.Caption = " " lbl_ultimaHora.Caption = " " Else lbl_destino.Caption = ultimoDestino lbl_ultimaData.Caption = ultimaData lbl_ultimaHora.Caption = ultimaHora End If End Sub |
Vale destacar no código acima o seguinte :
1- A utilização do método FileCopy do objeto FileSystemObject para realizar a cópia do banco de dados
2- A utilização do recurso de gravar (SaveSetting) e obter(GetSetting) os valores armazenados no registro
3- A utilização dos componentes DirListBox, FileListBox e DriveListBox para definir o destino do backup
Pegue o projeto completo aqui : backup06.zip
Você
pode usar a rotina incorporando-a ao seu projeto. Pode também incrementá-la com
outras funcionalidades...
Eu sei, é apenas VB , mas eu gosto ...
José Carlos Macoratti