Manutenção em Banco de Dados – Parte 3

Continuando com nosso exemplo de como fazer manutenção em banco de dados no cliente agora vamos ver como criar uma rotina que se conecta automaticamnte ao banco de dados toda vez que enviamos uma atualização do sistema ao cliente. Na parte 2 vimos como criar uma função que verifica a versão do sistema utilizando um arquivo xml gravado no diretório corrente do sistema contendo o endereço do banco de dados

Tabela com o nome das tabelas do banco de dados

Crie uma tabela dentro do arquivo de códigos do seu programa Access com os seguintes campos:
image
Veja abaixo um exemplo de tabelas de um banco de dados:
image

A função VinculaTabelas fará as seguintes ações:

  • Testa o caminho com o banco de dados
  • Desvincula as tabelas atuais
  • Vincula as tabelas com o endereço do banco de dados

Função TestaConexao

No seu banco de dados crie uma tabela que servirá apenas para testar a conexão da seguinte forma:
image

image

Abra o módulo Utilitarios e crie a função:

Public Function TestaConexao(sPath As String) As Boolean
On Error GoTo Fim
    'Testa o caminho com o banco de dados
    'Apaga conexao atual
    DoCmd.DeleteObject acTable, "TestaConexao"

    'Vincula à tabela TestaConexao
    DoCmd.TransferDatabase acLink, "Microsoft Access", sPath, _
    acTable, "TestaConexao", "TestaConexao", False

    TestaConexao = True

    MsgBox "Teste de conexão com o banco de dados efetuado com sucesso" & _
    vbCrLf & "As tabelas serão vinculadas ao banco de dados agora...", _
    vbInformation, "Aviso de Sistema"
    Exit Function
Fim:
    If Err.Number = 7874 Then 'caso não consiga desvincular
        Resume Next
    ElseIf Err.Number = 3024 Then 'caso não encontre o caminho do banco de dados
        TestaConexao = False
        MsgBox "Caminho do banco de dados não foi encontrado" & vbCrLf & _
        "Verifique novamente os endereços de conexão", vbInformation, "Aviso de Sistema"
    Else
        TestaConexao = False
        MsgBox Err.Number & " - " & Err.Description, vbInformation, "Erro"
    End If
    Exit Function
End Function

Função Vincular Tabelas

Agora abra o módulo utilitarios e crie a função abaixo. Esta função irá vincular ao seu programa todas as tabelas contidas na Tabela Tab.

Public Function VinculaTabelas(sPath As String) As Boolean
On Error GoTo Fim
    'Vincula tabelas no sistema
    If TestaConexao(sPath) = False Then
        VinculaTabelas = False
        Exit Function
    End If
    Dim db As DAO.Database
    Set db = CurrentDb()
    Dim rs As DAO.Recordset
    Set rs = db.OpenRecordset("Tab")
    If Not rs.EOF Then
    Else 'se a tabela Tab estiver vazia
        rs.Close
        db.Close
        VinculaTabelas = False
        MsgBox "Nenhuma tabela foi encontrada para ser vinculada", vbInformation, "Aviso de Sistema"
        Exit Function
    End If

    Dim sNomeTabela As String
    Dim iQtd As Integer
    Dim iContador As Integer
    rs.MoveLast
    lQtd = rs.RecordCount 'número de registros
    iContador = 1
    SysCmd 1, "Aguarde... Vinculando Tabelas...", lQtd
    rs.MoveFirst
    Do While Not rs.EOF
        sNomeTabela = rs.Fields("NomeTabela")
        DoCmd.DeleteObject acTable, sNomeTabela 'desvincula a tabela
        DoCmd.TransferDatabase acLink, "Microsoft Access", sPath, acTable, sNomeTabela, sNomeTabela, False 'revincula a tabela
        SysCmd 2, iContador 'atualiza visão da barra de progressão do access
        iContador = iContador + 1 'soma 1 no contador
        rs.MoveNext
    Loop
    SysCmd 3 'limpa barra de progressão do Access
    VinculaTabelas = True
    MsgBox "As tabelas foram vinculadas", vbInformation, "Aviso de Sistema"
    Exit Function
Fim:
    If Err.Number = 7874 Then 'caso não encontre a tabela a ser desvinculada
        MsgBox "A Tabela " & sNomeTabela & " não foi encontrada ou não pode ser desvinculada", vbInformation, "Aviso de Sistema"
        Resume Next
    ElseIf Err.Number = 3011 Then 'caso o nome da tabela não exista no banco de dados ou tenha sido digitada de forma errada
        MsgBox "A tabela " & sNomeTabela & " não foi encontrada ou pode ser vinculada", vbInformation, "Aviso de Sistema"
        Resume Next
    Else
        MsgBox Err.Number & " - " & Err.Description, vbInformation, "Erro"
        SysCmd 3 'limpa barra de progressão do Access
    End If
    Exit Function
End Function

Após vinculada a tabela irá ficar desta forma:
image

Na parte 4 você verá como fazer alterações nas tabelas do seu banco de dados.

Parte 1
Parte 2
Parte 4

Nenhum comentário:

Postar um comentário