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:
Veja abaixo um exemplo de tabelas de um banco de dados:
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:
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:
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