MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

Obrigado

Administração do MaximoAccess

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

    [Resolvido]Vincular fonte de dados mysql front em access

    Compartilhe

    thiagonsilvaa
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 180
    Registrado : 12/01/2017

    [Resolvido]Vincular fonte de dados mysql front em access

    Mensagem  thiagonsilvaa em 12/11/2018, 19:54

    Boa tarde a todos !

    Bom, vejo muitos códigos no fórum a respeito de conectar o access ao banco de dados mysql.
    Me surgiu uma dúvida e venho através do fórum pedir ajuda para tentar sanar a mesma.

    Há alguma maneira de eu vincular a base de dados mysql no access, através de algum método ?

    A ideia é, já com o banco de dados pronto no mysql, ao abrir o access fazer o vínculo automaticamente, isso é possível ?

    Grato.
    avatar
    good guy
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1248
    Registrado : 05/02/2010

    Vincular fonte de dados mysql front em access

    Mensagem  good guy em 12/11/2018, 21:28

    Olá Thiago,

    Assista este video:

    [Você precisa estar registrado e conectado para ver este link.]

    thiagonsilvaa
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 180
    Registrado : 12/01/2017

    Re: [Resolvido]Vincular fonte de dados mysql front em access

    Mensagem  thiagonsilvaa em 12/11/2018, 23:50

    Boa noite meu caro !
    Primeiramente obrigado pela resposta.

    Eu assisti o vídeo, a conexão com o banco de dados é feita manualmente, correto ? Através do conector.
    Como disse na mensagem inicial, a ideia era fazer automático, andei dando uma olhada no método "docmd.transferdatabase", mas não sei se ele se encaixa nessa questão.

    O que você acha?
    Caso ele se encaixe, a ideia era colocar num formulário inicial uma chamada pra fazer o vínculo direto com as opções já configuradas no vba.

    Gratidão !

    thiagonsilvaa
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 180
    Registrado : 12/01/2017

    Re: [Resolvido]Vincular fonte de dados mysql front em access

    Mensagem  thiagonsilvaa em 13/11/2018, 00:29

    Boa noite meu caro !

    Consegui através desse código vincular apenas uma tabela, funcionou perfeitamente.

    Porém, se eu quiser vincular todas as tabelas do banco de dados vou ter que mencionar todas ?
    Será que é possível o código "varrer" todas as tabelas daquele DB ?

    Segue o mesmo:
    Código:
    DoCmd.TransferDatabase acLink, "ODBC Database", _
    "ODBC;DSN=projeto;UID=root;PWD=;LANGUAGE=us_english;" _
    & "DATABASE=movedb", acTable, "tblcliente", "tblcliente"

    Abraços.
    avatar
    thiagomcosta
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 332
    Registrado : 23/01/2017

    Re: [Resolvido]Vincular fonte de dados mysql front em access

    Mensagem  thiagomcosta em 13/11/2018, 13:57

    Não sei a solução para o seu problema, mas com certeza tem alguma maneira de buscar algum objeto com todas as tabelas do banco e/ou varrer com um foreach.

    thiagonsilvaa
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 180
    Registrado : 12/01/2017

    Re: [Resolvido]Vincular fonte de dados mysql front em access

    Mensagem  thiagonsilvaa em 13/11/2018, 14:25

    Bom dia meu caro !
    Então, eu pensei nisso, mas não sei se esse método aceita.

    Estou precisando de ajuda, caso saiba alguma maneira, mencione, por favor.

    Gratidão !
    Abraços.
    avatar
    thiagomcosta
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 332
    Registrado : 23/01/2017

    Re: [Resolvido]Vincular fonte de dados mysql front em access

    Mensagem  thiagomcosta em 13/11/2018, 14:44

    Não tem como eu testar agora, mas uma solução seria abrir um recordset do banco em MySQL usando o seguinte comando SQL (que eu achei numa googlada e esqueci de anotar onde):
    Código:
    SELECT * FROM information_schema.tables WHERE table_schema = 'nome-do-banco';
    Para abrir um recordset de um banco de dados MySQL você vai achar diversos exemplos aqui mesmo no fórum.

    A tablea information_schema.tables tem informações sobre as tabelas do banco. Deve ter um campo Name ou algo assim.
    Varre os registros do recordset e para cada um deles executa o comando para linkar as tabelas.

    Código:
    Do While Not rs.EOF
        DoCmd.TransferDatabase acLink, "ODBC Database", "ODBC;DSN=projeto;UID=root;PWD=;LANGUAGE=us_english;" & "DATABASE=movedb", acTable, rs!Name, rs!Name
        rs.MoveNext
    Loop

    Não é a solução direta para o seu problema, mas tenta ir meio que por este caminho que logo você resolve.

    thiagonsilvaa
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 180
    Registrado : 12/01/2017

    Re: [Resolvido]Vincular fonte de dados mysql front em access

    Mensagem  thiagonsilvaa em 13/11/2018, 20:10

    Boa noite a todos !

    Fica aqui minha imensa gratidão ao meus amigos pela ajuda.

    Adaptei um código do site usandoaccess juntamente ao que o amigo Thiagomcosta expôs na mensagem anterior e funcionou perfeitamente !

    Segue o mesmo:
    Código:
    DoCmd.Hourglass True 'Habilita a Ampulheta

    Dim strConnect As String 'String de conexão com o Servidor
    Dim strProvider As String 'String que recebe o nome do provedor
    Dim strDataSource As String 'String que guarda o nome da fonte de dados
    Dim strDataBaseName As String 'String que recebe o nome do banco de dados
    Dim usr_id As String  'Identifica do usuário para o banco de dados
    Dim pass As String  'Recebe a senha do banco de dados
    Dim mySqlIP As String 'Rota do banco de dados, na web

    mySqlIP = "127.0.0.1"
    strDataBaseName = "movedb"
    usr_id = "root"
    pass = ""
    strConnect = "driver={MySQL ODBC 8.0 Unicode Driver};server=" & mySqlIP & ";uid=" _
    & usr_id & ";pwd=" & pass & ";database=" & strDataBaseName
    'Cria o objeto de conexão
    Set adoDataConn = New ADODB.Connection
    'Usamos um cursor do lado do cliente, pois os dados
    'serão acessados na maquina do cliente e não de um servidor
    adoDataConn.CursorLocation = adUseClient

    'Abre a conexão
    adoDataConn.Open strConnect
    'Prepara o recordset
    Set rsmysql = New ADODB.Recordset
    'Este é o único tipo de cursor a ser usado
    'com um cursor localizado no lado do cliente
    rsmysql.CursorType = adOpenStatic
       
    'Estamos usando o cursor no cliente
    rsmysql.CursorLocation = adUseClient

    'Isto garante, que o registro que está sendo editado, pode ser salvo
    rsmysql.LockType = adLockPessimistic

    'Fonte de registro – Sua tabela no servidor ou consulta
    rsmysql.Source = "SELECT * FROM information_schema.tables WHERE table_schema = 'movedb';"

    'O recordset precisa saber qual a conexão em uso
    rsmysql.ActiveConnection = adoDataConn

    'Abre o recordset e com isto o evento Move Complete será disparado
    rsmysql.Open
       
    Set Me.Recordset = rsmysql

    'Carrega a origem para todos os controles
    Do While Not rsmysql.EOF
        DoCmd.TransferDatabase acLink, "ODBC Database", "ODBC;DSN=hotel;UID=root;PWD=;LANGUAGE=us_english;" & "DATABASE=movedb", acTable, rsmysql!table_Name, rsmysql!table_Name
        rsmysql.MoveNext
    Loop

    MsgBox "Conexão concluída...", vbExclamation, NomeAplicativo

    DoCmd.Hourglass False  'Desabilita a Ampulheta

    Um abraço a todos !!!
    avatar
    thiagomcosta
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 332
    Registrado : 23/01/2017

    Re: [Resolvido]Vincular fonte de dados mysql front em access

    Mensagem  thiagomcosta em 13/11/2018, 20:46

    Só uma sugestão, é uma boa prática fechar as conexões:

    Código:
    rsmysql.close
    set rsmysql = nothing
    adoDataConn.close
    set adoDataConn = nothing

      Data/hora atual: 16/12/2018, 11:38