... Pague apenas R$67,00 uma única vez e tenha acesso por 1 ano aos vídeos e arquivos exemplos do site ...

Clique aqui e obtenha mais detalhes.


Realizando uma conexão Access x MySQL, via ODBC

De Jefferson Braz

Até o momento foi explicado como trabalhar com o MySQL, utilizando o ADO para conexão.  Embora seja um processo mais rápido, vale destacar que é bem  trabalhoso, pois exige um considerável tempo de programação.  É importante também mencionar que perdemos alguns recursos nativos do JET, como por exemplo, o evento Dirty.

Então, que tal utilizar o MySQL com tabelas vinculadas, sem perder a performance e ainda utilizar todos os recursos programacionais do Microsoft Access?  Para isso, vamos criar uma conexão ODBC.

Mas, o que é uma conexão ODBC?

O ODBC (acrônimo para Open Database Connectivity) é um padrão para acesso a sistemas gerenciadores de Bancos de Dados (SGBD).  Este padrão define um conjunto de interfaces que permite o uso de linguagens de programação como: Visual Basic, Delphi, Visual C++, Java, VBA do Access, entre outras e é capaz de utilizar estas interfaces para ter acesso a uma vasta gama de Bases de Dados distintas, sem a necessidade de codificar métodos de acesso especializados.

Para criarmos uma conexão ODBC, precisamos do driver ODBC do respectivo Banco de Dados a ser acessado.  Em nosso caso, o MySQL.

O driver ODBC do MySQL, ou como ele é referenciado pelo fabricante, Connector/ODBC poderá ser baixado aqui.

O primeiro passo é instalar o ODBC.  O processo é simples e não será mencionado nesse artigo.

Uma vez instalado, iremos fazer a conexão ao nosso Banco de Dados.  Esse processo poderá ser feito para uma base de dados local ou web.   Nesse caso, uma base de dados web.

* Clique em Fonte de Dados (ODBC) através da pesquisa ou no seu Painel de Controle do Windows.

R

* Na janela Administrador de fonte de dados ODBC, clique na aba Fonte de dados de usuário.

* Em seguida ,clique no botão Adicionar.

R

* Será iniciado o assistente.

* Selecione a opção MySQL ODBC x.x Driver.  A versão poderá variar segundo a versão do driver que foi realizado o download.  Em nosso caso é a versão 5.01.08.00.

* Em seguida, clique em Concluir.

R

Será exibida a janela MySQL Conenector/ODBC Data Source Configuration. Nesse momento, a sua conexão está criada.  Será necessário agora, criar a respectiva conexão.

O próximo passo é configurar a sua conexão (veja na figura abaixo).

Data Source Name: esse é o nome da sua conexão.  Você poderá utilizar o nome que desejar.

Description: descrever a sua conexão, como por exemplo o Banco de Dados que ele está acessado.

TCP/IS Server: informamos o IP ou a rota no servidor na web.  O servidor web irá variar segundo a sua hospedagem.  A rota da conexão normalmente é informada no Painel de Controle da sua hospedagem.

Port: normalmente a porta padrão é 3306, mas poderá variar segundo a instalação do MySQL.  Como instalar e configurar o MySQL, abordaremos em outro artigo.

User: nome do seu usuário.

Password: sua senha de acesso ao database.

Nesse momento, você já poderá clicar no botão Teste, que irá verificar se o driver consegue se comunicar com a sua base de dados.   Se o teste retornar Connection Successful significa que a conexão foi realizada com sucesso.  Assim, bastará informar o banco de dados através do combobox Database.

R

Agora devemos configurar como a conexão irá se comportar.

Muitos usuários que se aventuraram em uma conexão ODBC com o MySQL, enfrentaram algum problema do comportamento da conexão com a base de dados.  Isso ocorre porque a conexão ODBC se conecta ao banco de dados por um determinado tempo, 60 segundos por exemplo.  Depois desse período, havendo ociosidade do sistema, ele encerra a conexão.

Isso faz com que, o usuário ao acessar o formulário, ele apresente erro de conexão, que só é restaurada quando o aplicativo Microsoft Access é fechado e aberto novamente.

Outro efeito é quando executamos um evento refresh ou uma consulta exclusão através de um formulário.   Os campos são preenchidos com a expressão #Excluido#.

Para evitar esses efeitos, devemos configurar o comportamento da conexão.

As configurações necessárias são feitas nas abas:

Aba Connection: ela é responsável pelo comportamento da conexão.  Iremos assinalar as seguintes configurações:

Allow big result set: ele permite a manipulação de um grande conjunto de dados.

Use compression: comprimirá os dados ao serem processados.

Enable automatic reconnect: esse é o mais importante.  Ele realiza a conexão com a base de dados tão logo o período de ociosidade seja encerrado. Se ele não for assinalad,o ocorrerá o efeito da perda de conexão no formulário.

Interactive Cliente: permite uma interação do cliente na respectiva conexão.

Allow multipe statements: permite declarações múltiplas.

Character Set: muito importante. Assinale utf8. Ele garante que os caracteres como ç e acentos não sejam trocados por outros caracteres.

R

Aba Cursors/Results: ela é responsável pela forma que os dados são manipulados.  Iremos assinalar as seguintes configurações:

Enable dynamic cursors: permite habilitar o cursos dinamicamente. Assim, os dados poderão ser manipulados tanto do lado do usuário como do lado do servidor, sem conflitos.

R

Os demais recursos serão tratados em um artigo posterior.

Após realizar todas essas configurações, clique em OK para concluir o processo.

O próximo passo é vincular as tabelas MySQL ao seu front-end Access.

* Abra o seu aplicativo Microsoft Access.

* Na guia Dados Externos da ribbon clique no combobox Mais.

* Clique em Banco de Dados ODBC.

R

* Clique na opção Vincular à fonte de dados criando uma tabela vinculada.

R

* Na janela Selecionar fonte de dados clique na aba Fontes de dados da máquina.

* Clique na fonte de dados desejada.

* Clique em OK para seguir com a operação.

R

* Será exibida a janela Vincular tabelas listando todas as tabelas disponíveis na conexão.

* Selecione as tabelas necessárias e clique em OK.

R

Após a seleção de todas as tabelas, as mesmas estarão disponíveis para manipulação através do Access.

Você poderá observar que as tabelas vinculadas na web através do ODBC, aparecem com um ícone de globo.

R

As tabelas vinculadas não são passíveis de manipulação de estruturas, através do MS Access.  Para manipulação das tabelas para alteração de sua estrutura, será necessário um aplicativo que conecta diretamente ao banco de dados MySQL.  Um bom aplicativo para essa operação é o MySQL-Front.  A utilização do mesmo será mostrada em um artigo futuro.

Agora que sua aplicação está vinculada ao seu banco de dados MySQL, você poderá criar relatórios, formulários e consultas da mesma forma estrutural como é feita nos objetos do MS Access, e isso tudo de forma simples e rápida.

Clique aqui e visite o canal da Kartoffel no YouTube.

Em breve postaremos vídeos explicativos de todos os nossos artigos publicados com o apoio do UsandoAccess.

Artigos relacionados:

Integrando o Access com servidor MySQL - Introdução

Refinando sua conexão através do ADO

Trabalhando com imagens anexadas ao Banco de Dados

Até o próximo artigo.

Jeferson Braz é programador em MS Access e Visual Basic com mais de 17 anos de experiência. 
 
Diretor de Desenvolvimento da Kartoffel Desenvolvimento de Sistemas Ltda, empresa especializada 
em Microsoft Access e CMS Joomla.  
 
Atua no mercado de desenvolvimento de aplicações customizáveis, realizando integração MS Access 
à base de dados Web e a Websites, suporte e manutenção. 
 
http://www.kartoffel.com.br

 


 

 


32 comentários

Jossua   15/09/2014 08:03:05

Avelino: parabéns por manter um site com um conteúdo tão rico e muito bem elaborado em MS Access.

Jéferson: parabéns por contribuir com a comunidade com seus artigos.


Abraços a todos.

Samuel   15/09/2014 10:06:35

Profissionais que merecem todo o nosso respeito pela grande contribuição que levam a todos os programadores experientes ou não.

Obrigado mais uma vez pelos ensinamentos aqui aprendidos.

parabéns Avelino e Jefferson

Rodrigo   15/09/2014 10:19:14

Ótimo artigo...

Algumas sugestões... quem utiliza windows 8 64 bits: procure a fonte de dados odbc em windows\sysWOW64\obdcad32.exe (se for direto pelo painel de controle não encontrará o driver);

Criar "na unha" as tabelas e dados novamente no server é bem trabalhoso. Para isto utilize o aplicativo ... ms access to mysql;

Abraços.

Rodrigo   15/09/2014 10:42:07

Uma pergunta Avelino...

Como ficaria a vinculação das tabelas pelo checavinculo? Deve retirar esta macro ou há alguma forma de reconhecer o banco de dados externo?

JBSR (Kartoffel)   15/09/2014 11:18:34

Bom eu particularmente não considero trabalhoso a criação da base na 'unha' até porque já realizo a construção diretamente no MySQL.

Mas como eu já previa o processo de conversão, já estamos elaborando um artigo para a conversão da base de dados Access para MySQL com a utilização do Bullzip MS Access to MySQL e a criação de base de dados através do MySQL-Front.

Em breve o Avelino irá realizar as publicações.

JBSR (Kartoffel)   15/09/2014 11:20:28

Rodrigo, esqueça macros. Faça o processo via VBA alem de ser muito mais dinâmico fica fácil percorrer o código em caso de algum erro para soluciona-lo.

Também iremos publicar um artigo referente ao processo de atualizações de vínculos.

Sds

Rodrigo   15/09/2014 11:45:26

Obrigado pelas informações JBSR...

Sobre a vinculação, somente citei pois o Avelino tem uma ferramenta de vinculação de tabelas, que utiliza o VBA, mas que é acionado pela macro autoexec na inicialização do aplicativo.

Tentei realizar alguns testes aqui e ocorreu tudo conforme você orientou.
Como já tinha o bd pronto, fiz a importação das tabelas utilizando o mysql-front para meu server.

Depois tentei realizar o teste com o front-end.. Tudo ok.
Mas quando vou atualizar ou modificar qualquer informação utilizando o access, ocorre um erro:
server does not support 4-byte encoded UTF8 characters. (#0).

Se faço a modificação pelo mysql-front eu consigo.
No meu server esta: UTF-8 Unicode (utf8);
O driver odbc que estou utilizando é 5.2(w).

Pelo que procurei nos foruns, alguns dizem que é necessário modificar a versão para 3.51.
Alguma sugestão para meu problema?
Muito obrigado pela ajuda.
Abraços

Marcelo David   15/09/2014 11:49:08

Excelente, como sempre! Vou me "aventurar" em migram meu front-end para MySQL na WEB, caso haja necessidade. É mais um artigo para meu rol de consultas/pesquisas!

Obrigado aos responsáveis pelo artigo! Amo Access/VBA!

Avelino Lourenço João   15/09/2014 12:09:01

Mais uma vez esse site trás um grande artigo, parabéns os dois Mestres Avelino e Jéferson!!! A minha duvida é trabalhar com tabelas vinculadas, não ira sobrecarregam o servidor sem necessidade o Ms Access é uma grande ferramenta mais mim deparei com uma situação meio complicada tentei até solicitar apoio do mestre Jéferson e nada já estou ate a estudar C#, sera que esse técnica não ira sobrecarregar o servidor?

JBSR (Kartoffel)   15/09/2014 12:22:52

server does not support 4-byte encoded UTF8 characters. (#0).

O servidor já está te falando aonde está o problema. Não tem nada a ver com sua conexão ODBC e sim com sua base de dados MySQL, da forma que ele foi configurada.

Utilize outra formatação ou deixe em branco.

Sds

Eduardo   15/09/2014 13:25:47

Existe um procedimento para criar automaticamente esta conexão através do access ???

JBSR (Kartoffel)   15/09/2014 14:07:44

Sim, há como criar conexão ODBC via vb/vba.

Mas isso será tratado em um próximo artigo.

Sds

Eduardo   15/09/2014 16:02:34

Em relações aos drivers do odbc é de acordo com o sistema operacional??

Rodrigo   15/09/2014 16:07:41

JBSR...

Então sobre o erro informado: server does not support 4-byte encoded UTF8 characters. (#0), o problema estava no driver... simplesmente atualizei para a versão mais atual e funcionou normalmente. Não precisei alterar nada em minha base de dados mysql.

Eduardo... sobre a sua pergunta.. acho que não.. pois utilizo drivers de 32bits em sistema operacional 64bits e funciona normalmente.

O JBSR irá dar o aval.

Abraços.

Marcio Melo   15/09/2014 17:19:30

Estou a 3 semanas estudando sobre o conteúdo desse artigo e fazendo diversos testes... veio na hora certa, vou fazer os ajsutes aqui descritos para não cair a vinculação. Nos meus testes gostei muito dos resultados com o banco MySql instalado localmente, pois a resposta é super rápida, com os dados hospedados na internet, uma tabela com 10 mil registros deu um delay de uns 2 à 3 segundos, minha conexão é banda larga da Net com 10 Mb e a base de dados esta no hoteldaweb em servidor linux.

Agradeço muito a parceria de Jeferson e Avelino por proporcionar essa experiência web, que já venho acompanhando desde os 1º artigos. Estou ancioso para os próximos sobre a vinculação VBA , conversão access p MySql e a modelagem no MySql.

Jeferson, no artigo que tem o exemplo do AccessWeb2 eu adicionei uma variável para informar o Tipo de servidor se é Windows ou Linux, se quiser eu posso lhe enviar... eu mantive tudo original e apenas adicionei como deve ser a string para se conectar quando for servidor em Linux.

Sou mais Brasil!

Forte abraço!


Avelino Lourenço João   16/09/2014 06:32:18

JBSR (Kartoffel) com essa técnica acho que aquela minha duvida que tinha sobre o projecto pdv estar resolvida, agora gostaria de saber como configurar via vba: Allow big result set,Use compression,Enable automatic reconnect,
Interactive Cliente,Allow multipe statements e Character Set.

Idenilton Freitas Cardoso   17/09/2014 09:36:01

Mas uma vez venho agradecer a Deus por existir pessoas como vocês Jefferson Braz e Avelino Sampaio.
"Esse é um pequeno passo para a programação, mas um grande salto para os programadores."
Esse tutorial certamente vai calar a boca de muita gente que desdenha do Access, simplesmente a melhor ferramenta para desenvolvimento de sistemas de banco de dados...

Um grande abraço a todos.

José Mendes   27/10/2014 10:32:49

Boa tarde,

Fiz um teste vinculando uma tbl em mysql ao access.

A vinvulação consigo e consigo tambem trabalhar nos dados da tabela.

O problema surge quando tento criar uma tabela com base na tabela vinculada.

A tabela vinculada tem +/- 14 mb.

Recebo o erro:

[MySQL][ODBC 5.3 (a) Driver]Lost connection to MySQL server during query (#2013)

Alguma ideia de como resolver?

JBSR   27/10/2014 10:47:03

Rogerio, basta atualizar o driver odbc para a versão mais recente.

Att

JBSR   27/10/2014 10:48:27

José não entendi seu problema.

"criar uma tabela com base na tabela vinculada." Não seria uma consulta?

Att

José Mendes   27/10/2014 16:50:12

Estou a utilizar o mais recente 5.3.4

O que faço é criar uma tabela local com dados de uma tabela em MySQL na net + dados de tabelas locais , que tem cerca de 200000 registos.

JBSR   27/10/2014 17:21:17

O que você está precisando e fazer uma especie de "sincronização".

Pelo que você falou pode ser alguma atualização de driver. Tente utilizar uma versão 5.1 por exemplo

Sds

José Mendes   27/10/2014 17:57:06

JBSR,

Acho que resolvi.

Instalei o conector 5.1 e não resultou, então instalei o 3.51 e ai funcionou.

Muito obrigado pelas dicas

ANTONILDO CORDEIRO   05/03/2015 15:01:18

Olá parabéns, pelo trabalho!
queria que vc postassem exemplo de conexão em uma rede local e servidor local para acesso de estações locais com win8, win7, winxp em servidor com Windows essencials as estaçoes com domínio e fora do domínio pode ser? no aguardo

JBSR   05/03/2015 15:41:19

Antonildo

Indiferente da plataforma, ou se é local ou na web, a forma de conexão é uma só.

O que vai determinar para onde está indo a conexão nesse caso é a conexão ODBC, que é nela que é configurada.

O mesmo vale para configuração via ADO. O que muda no provider é ao invés de apontar para um endereço web, apontar diretamente para um IP, que por sua vez pode ser uma intranet ou internet.

Sds

João Araujo   21/05/2015 17:14:01

Amigo, primeiramente gostaria de te parabenizar pelo site, muito bom conteúdo...
Segui exatamente seus passos e recebi a seguinte mensagem do Acess:
you cannot use odbc to import from export to or link an external microsoft access or isam.
Pode me ajudar?
Agradeço


João Araujo   21/05/2015 17:27:00

Favor desconsiderar meu comentário acima, consegui resolver este problema, mas agora debati com outro erro:
ODBC -- Call Failed
[Microsoft][ODBC DRIVER MANAGER] O DSN especificado contém uma incompatibilidade de arquiteturas entre o Driver e o Aplicativo

Mario Francisco   21/05/2015 18:16:34

Olá amigo, consegui realizar a conexão e importar uma tabela para testar mas não consigo alterar os dados da tabela... É possível ter acesso para alterar dados ou a tabela é só "read-only" ?

JBSR   21/05/2015 18:34:49

É todo um conjunto.

Como a base MySQL está configurada, e como configurou o driver.

Vale dar uma olhada no manual do MySQL pois há uma serie de detalhes.

sd

Shalaph   17/06/2015 15:22:30

Ola pessoal, antes de tudo devo felicitar aos criadores desta pagina, que é sem duvida um "Must Have"...
E agora a minha duvida:
Tenho estado a uns dias a volta de uma situação parecida, e pergunto me se me poderiam dar uma luz para eu encontrar o meu caminho, vou descrever.

Tenho uma base de dados da minha empresa em ms access, e precisava de poder usar duas dessas tabelas no MySQL no meu servidor onde esta o meu site. Até aqui tudo bem consigo criar as tabelas de ligação sem problemas, e as alterações feitas na tabela de ligação surtem efeito na tabela do meu MySQL.

Tabela do ms Access: Cliente
Tabela de MySQL no meu servidor remoto: Cliente

Quero ligar as duas tabelas de forma ao introduzir um novo cliente na tabela Cliente do ms Access, ser introduzido na tabela Cliente do MySQL.

Segui os passos e entao fico com:

Tabela do ms Access: Cliente, Tabela de ligação Cliente1
Tabela de MySQL no meu servidor remoto: Cliente

Agora ao introduzir um cliente na tabela de ligação, ele é introduzido na tabela do mySql, mas se for na tabela Original, isto é Cliente do Ms Access, ele não introduz na tabela de ligação nem na tabela do mySQL.

Estou a partir de um principio errado não é?

Podiam me dar uma luz no que devo fazer, o ACCESS não é a minha praia...

Manoel Brás   20/12/2015 21:55:14

Galera eu tenho vasto conhecimento em Access
mais estou precisando muito de fazer uma conexão entra Access formulário e banco de dados php my admin


se alguém conseguir fazer isso me ajude por favor!

91-99226-8253

JBSR   21/12/2015 08:44:52

Prezado Manoel

Você está fazendo confusão.

Não existe banco de dados php my admin: O PHP MyAdmim é um front-end de gerencialmente de banco de dados. O que deve ter feito você fazer essa confusão é que há como acessar diretamente a um banco de dados através de PHP MyAdmin onde ele carrega apena os dados do banco que é feito via parâmetros, mas é um banco mysql.

Para se conectar a um banco de dados, seja ele qual form você necessita do driver ODBC do mesmo.

Existe n forma de se conectar um formulário diretamente a um tabela mysql. Via vinculação, via ADO, via DAO, via provider, utilizando até recursos que não estão disponíveis no access, como o comando LIMITE do MySQL, e sem a necessidade de utilizar um StroredProducer.

Caso tenha interesse, prestamos suporte ao desenvolvedor e poderemos auxilia-lo como realizar esses processo.

Nossos pacotes poderão ser consultas em www.kartoffel.com.br/site/index.php?option=com_content&view=article&id=65&Itemid=53

Poderá nos contatar através do websuporte@kartoffel.com.br.

Sds




Envie seu comentário: