Revinculação de Tabelas Automatica

Moderador: Avelino Sampaio

marcelo3092
Mensagens: 91
Registrado em: 23 Jun 2016, 14:21

Revinculação de Tabelas Automatica

Mensagempor marcelo3092 » 26 Dez 2018, 02:24

Boa noite gostaria de saber se alguem conseguiu ou tenha um código para revinculação automatica para servidor mysql online e access o plinio mabesi tem um porem muito vago de informação esta completo mais não tem nenhum exemplo sera que alguem poderia dar uma maozinha?


Código:
'===================================================================
'Módulo ControleVinculo - Conexão com Mysql
'
'Métodos:
'1-Checar o vínculo do FrontEnd atual com um BackEnd no servidor MySql;
'2-Atualizar o vínculo do FrontEnd atual com um BackEnd no servidor MySql;
'3-Criar uma conexão com um banco de dados em um servidor MySql;
'4-Executar atualizações e consultas utilizando a conexão MySql.
'
' Autor: Plínio Mabesi
' Contato: pliniomabesi@gmail.com
' Website: http://www.mabesi.com
'===================================================================

Option Compare Database
Option Explicit

'Cria uma conexão ADO
Private mySqlCon As New ADODB.Connection

'Cria um recordset ADO
Private rstCon As New ADODB.Recordset

Sub conectarMySql(argUsuario As String, argSenha As String, argIp As String, _
argBd As String)
'Esta função abre a conexão com o MySql e a deixa ativa, e pode também
'abrir um recordset para testar a conexão.

Dim strConnect As String

strConnect = "driver={MySql ODBC 5.1 driver};server=" & argIp & ";uid=" & _
argUsuario & ";pwd=" & argSenha & ";database=" & argBd

mySqlCon.Open strConnect

End Sub

Function atualizaMySql(codigoSql As String) As Boolean
On Error GoTo Err_atualizaBanco
'Atualiza dados no Banco utilizando o código Sql passado à função,
'retornando verdadeiro caso a operação ocorra com sucesso
'ou falso caso ocorra algum problema

rstCon.Open codigoSql, mySqlCon, 3, 3
atualizaMySql = True

Exit_atualizaBanco:
Exit Function

Err_atualizaBanco:
atualizaMySql = False
MsgBox Err.Description
Resume Exit_atualizaBanco

End Function

Function consultaMySql(codigoSql As String) As ADODB.Recordset
On Error GoTo Err_consultaBanco
'Consulta os dados no Banco utilizando o código Sql passado à função,
'retornando um recordset com o resultado da consulta

rstCon.Open codigoSql, mySqlCon, 3, 3
Set consultaMySql = rstCon

Exit_consultaBanco:
Exit Function

Err_consultaBanco:
Set consultaMySql = Nothing
MsgBox Err.Description
Resume Exit_consultaBanco

End Function

Function ChecaVinculoMysql(strNomeTab As String, strCampo As String) As Boolean
On Error GoTo ChecaVinculo_Err
' Função que checa o vínculo da tabela strNomeTab.
' Retorna True ou False, dependendo do vínculo
' estar correto, ou não.

Dim db As Database, fld As Field, prp As Property
Dim strValor As String
Dim rstCon As Recordset

Set db = DBEngine(0)(0)
ChecaVinculoMysql = False 'Inicializa a função.

'Tenta obter um campo da tabela vinculada strNomeTab.
'Se der erro, é preciso revincular as tabelas.
Set rstCon = db.OpenRecordset(strNomeTab)
strValor = rstCon(strCampo)

'Se chegou aqui é porque o vínculo é válido.
ChecaVinculoMysql = True


ChecaVinculo_Sai:
Set db = Nothing 'libera memória.
Set fld = Nothing: Set prp = Nothing
Exit Function

Tenta_Vincular:
ChecaVinculoMysql = False
GoTo ChecaVinculo_Sai

ChecaVinculo_Err:
If Err.Number = 3219 Then
'Erro - Não conseguiu realizar a conexão.
GoTo Tenta_Vincular
Else
Resume ChecaVinculo_Sai
End If

End Function

Function atualizaVinculoMysql(argUsuario As String, argSenha As String, _
argIp As String, argBd As String) As Boolean
On Error GoTo Err_Atualiza
' Atualiza vínculos ao banco de dados informado.
' Retorna True se bem sucedida.
' varPwd (opcional) recebe a senha do arquivo mdb.

Dim bdAtual As Database, defTabela As TableDef
Dim Contador As Integer
Dim StatusTexto As String
Dim strConnect As String
Dim tabela As String

atualizaVinculoMysql = False ' Valor inicial da função.

Screen.MousePointer = 11 ' Muda cursor para ampulheta

Set bdAtual = DBEngine(0)(0)
Contador = 1 ' Ajusta contador de tabelas = 1

' Inicia a barra de progresso do Access.
StatusTexto = "Atualizando vínculos com " & argBd & "..."
SysCmd acSysCmdInitMeter, StatusTexto, bdAtual.TableDefs.Count

' Define a string da propriedade Connect.
strConnect = "ODBC;driver={MySql ODBC 5.1 driver};server=" & argIp & _
";uid=" & argUsuario & ";pwd=" & argSenha & _
";database=" & argBd

' Loop pelas tabelas do front-end.
For Each defTabela In bdAtual.TableDefs

SysCmd acSysCmdUpdateMeter, Contador 'Atualiza o progresso.
Contador = Contador + 1

' Toda tabela vinculada possui a propriedade
' Connect preenchida.
If Len(defTabela.Connect) > 0 Then
defTabela.Connect = strConnect & ";table=" & defTabela.Name
defTabela.RefreshLink ' Atualiza vínculos.
End If

Next defTabela

atualizaVinculoMysql = True ' Revinculação completa.

Sai:
SysCmd acSysCmdRemoveMeter
Set defTabela = Nothing 'libera memória
Set bdAtual = Nothing
Screen.MousePointer = 0
Exit Function

Err_Atualiza:
MsgBox Err.Description
MsgBox "Houve um problema na Atualização de vínculos..." & vbCrLf & _
vbLf & _
"Erro: " & Err.Description
Resume Sai

End Function



desde ja agradeço a ajuda.

Disable adblock

Precisamos do seu apoio. Faca uma doacao para o site atraves do Paypal.


Avatar do usuário
Damasceno Jr.
Mensagens: 474
Registrado em: 08 Jun 2015, 01:30
Localização: Medicilândia-Pará

Re: Revinculação de Tabelas Automatica

Mensagempor Damasceno Jr. » 26 Dez 2018, 15:43

Tem artigo no site UsandoAccess que aborda o assunto.

Resumo: trabalhando vinculado
Parte 1

Resumo: trabalhando desvinculado
Parte 2

Resumo: imagens no banco mysql
Parte 3

Atualmente utilizo método do artigo 2 com adaptações. Dependendo do cenário, não aconselho permanecer "pendurado" (artigo 1) na conexão com o banco.
Quanto mais o tempo passa, mais descubro e mais me apaixono por MS Access.

marcelo3092
Mensagens: 91
Registrado em: 23 Jun 2016, 14:21

Re: Revinculação de Tabelas Automatica

Mensagempor marcelo3092 » 30 Dez 2018, 20:45

Boa noite damasceno sim eu consegui fazer todo esse processo com os formularios de cadastro desvinculado ate com a imagem carrega baixa tudo certo. O que me ocorreu agora e que nessa forma desvinculada e online não tenho muito conhecimento das formas de programação cheguei a um empasse o formulario que tenho um subformulario porem desvinculado de que forma é feito pq vinculado e facil e só usar pai e filho agora desvinculado n to conseguindo criar tipo cria o formulario pedido e o subformulario porem desvinculado. Ai que me surgiu a ideia de usar este código ai para que toda vez que entrar no sistema criaria um formulario splash tipo aquele de backup do avelino com barra de progresso que fizesse todo o processo de verificação e revinculação das tabelas e executar o sistema pois vinculado e bem mais facil. Teria alguma ideia de como fazer desvinculado com subformulario ou exemplo

Avatar do usuário
Damasceno Jr.
Mensagens: 474
Registrado em: 08 Jun 2015, 01:30
Localização: Medicilândia-Pará

Re: Revinculação de Tabelas Automatica

Mensagempor Damasceno Jr. » 31 Dez 2018, 15:43

Marcelo, quase nunca o caminho mais fácil para o desenvolvedor é o caminho que oferece mais desempenho e segurança para o cliente.

Se você está usando o método vinculado, então não deixe de ler este artigo no site do mestre Avelino feito por Jefferson Braz que também ensina sobre Enable automatic reconnect
Realizando uma conexão Access x MySQL, via ODBC

No método desvinculado, a solução para o seu caso seria usar tabelas temporárias. Uma tabela no access igual a tabela no servidor, tanto a que comportará as informações do formulário pai quanto a que comportará as informações do formulário filho. E então carregue as tabelas com os registros necessários e trabalhe normalmente. Exemplo de como seria para mostrar as vendas de um cliente: seria aberta a conexão com o servidor, conseguiria-se um recordset com as vendas do cliente no servidor mysql e ele carregaria a tabela vendas no access com os dados obtidos. Depois conseguiria-se um recordset detalheVendas no servidor mysql com o detalhe das vendas e ele carregaria a tabela detalhes de vendas no access. Aí então é abrir o formulário vendas normalmente e ver os dados "espelhos" do mysql
Quanto mais o tempo passa, mais descubro e mais me apaixono por MS Access.

Disable adblock

Precisamos do seu apoio. Faca uma doacao para o site atraves do Paypal.


Avatar do usuário
Damasceno Jr.
Mensagens: 474
Registrado em: 08 Jun 2015, 01:30
Localização: Medicilândia-Pará

Re: Revinculação de Tabelas Automatica

Mensagempor Damasceno Jr. » 04 Jan 2019, 07:51

Estou montando um exemplo simples. Aguarde...
Quanto mais o tempo passa, mais descubro e mais me apaixono por MS Access.

Disable adblock

Precisamos do seu apoio. Faca uma doacao para o site atraves do Paypal.



Voltar para “Módulos VBA”

Quem está online

Usuários neste fórum: Nenhum usuário registrado e 7 visitantes