CONEXAO COM MYSQL VIA ODBC

HUBER.FABIO 30/10/2013 16:02:33
#430547
Olá amigos, boa tarde !

Estou desenvolvendo uma rotina para que do meu sistema em banco MDB eu possa estar alimentando um banco MySQL com informações de Produtos!
Baixei exemplos do vbmania e também do macoratti e após vários testes e buscas na net não consegui conectar, está apresentando erro conforme imagem.
Estou com MySQL Workbench versão 5.6.14 instalado e estou abrindo as tabelas normalmente.
Baixei também no site da MySQL instalador do ODBC versão 5.2.6 e instalei.


NETMANIA 30/10/2013 16:59:44
#430550
Você pode postar o trecho referente a parte de conexão para ajudar na análise do erro?
HUBER.FABIO 30/10/2013 17:20:47
#430552
Olá..com certeza..segue abaixo

Private Sub cmdAbreConexao_Click()

Dim strConnect As String
Dim strProvider As String
Dim strDataSource As String
Dim strDataBaseName As String

Dim usr_id As String [ô] identificacao do usuario para o banco de dados
Dim pass As String [ô] a senha (se tiver) para o banco de dados
Dim mySqlIP As String [ô] o endereco ip da maquina na qual esta o mySql
mySqlIP = [Ô]localhost[Ô] [ô] a localizacao do usuario (localhost)
usr_id = [Ô]usuario[Ô] [ô] identificacao
pass = [Ô]senha[Ô] [ô] senha

[ô] string de conexao
strConnect = [Ô]driver={MySQL};server=[Ô] & mySqlIP & [Ô];uid=[Ô] & usr_id & [Ô];pwd=[Ô] & pass & [Ô];database=nomebanco[Ô]
Set adoDataConn = New ADODB.Connection

adoDataConn.CursorLocation = adUseClient

[ô]erro ocorre aqui
adoDataConn.Open strConnect

lblStringdeConexao.Caption = strConnect

Set rsMySQL = New ADODB.Recordset
[ô]Prepara o recordset

rsMySQL.CursorType = adOpenStatic

rsMySQL.CursorLocation = adUseClient

rsMySQL.LockType = adLockPessimistic

rsMySQL.Source = [Ô]Select * From clientes[Ô] [ô]altere para tabela que desejar

rsMySQL.ActiveConnection = adoDataConn

rsMySQL.Open

cmdAbreConexao.Enabled = False

cmdFechaConexao.Enabled = True

HabilitaNavegacao
cmdInclui.Enabled = True
cmdExclui.Enabled = True
cmdEdita.Enabled = True

lblBOF.Caption = rsMySQL.BOF
lblEOF.Caption = rsMySQL.EOF
End Sub
HUBER.FABIO 31/10/2013 09:39:05
#430573
Olá amigos !

Já testei com várias formas de conexão possíveis e encontradas e todas retornam a mesma mensagem conforme imagem.

Instalei o drive ODBC do link abaixo
http://dev.mysql.com/downloads/connector/odbc/

teria mais alguma coisa a fazer ?
MARCELO.TREZE 31/10/2013 10:01:37
#430574
Resposta escolhida
colega faça o seguinte, mude a string de conexao para:


strConnect = [Ô]Driver={MySQL ODBC 5.2 Driver}; Server=myserver;Database=mydb;User=readonly;Password=mypass;Option=3[Ô]


lógico altere conforme sua conexao (server, database,user,password)



HUBER.FABIO 31/10/2013 10:24:20
#430576
Olá

Aqui vai todas as strings já tentadas

[ô] string de conexao
strConnect = [Ô]driver={MySQL};server=[Ô] & mySqlIP & [Ô];uid=[Ô] & usr_id & [Ô];pwd=[Ô] & pass & [Ô];database=banco[Ô]
strConnect = [Ô]{MySQL ODBC 5.2 Driver};Server=127.0.0.1;Database=banco;User=usuario;Password=senha;Option=3[Ô]
strConnect = [Ô]Driver=MySQL ODBC 5.2 Driver;server=127.0.0.1;uid=root;pwd=senha;database=banco;port=3306[Ô]
strConnect = [Ô]Driver={MySQL ODBC 5.2 Driver};Server=127.0.0.1;Database=banco;uid=usuario;pwd=senha[Ô]
strConnect = [Ô]Driver={MySQL ODBC 5.2 Driver}; Server=myserver;Database=mydb;User=readonly;Password=mypass;Option=3[Ô]


Todos o mesmo erro, dá pra entender que ele nem tenta conectar, ele já diz que não acha uma fonte de dados ou seja ele não acha uma DLL uma conexão, sei lá ! Estou usando windows8 32 bits, mais creio que não tem nada a ver, estou com o mysql workbench aberto e o status está ok
MARCELO.TREZE 31/10/2013 10:41:06
#430578
qual o sistema oprecional que esta usando 32 ou 64 bits
HUBER.FABIO 31/10/2013 10:43:28
#430579
Estou usando windows8 32 bits e baixei a ODBC para 32 bits
MARCELO.TREZE 31/10/2013 10:51:29
#430582
faz o seguinte baixe o odbcdriver 5.1 não se preocupe ele funcionara com o mysql use esta string de conexao

SERVER = [Ô]10.1.1.110[Ô]
BD = [Ô]banco[Ô]
PORTA = [Ô]3306[Ô]
USER = [Ô]usuario[Ô]
SENHA = [Ô]senhausuario[Ô]
CON_STR = [Ô]DRIVER={MySQL ODBC 5.1 DRIVER};[Ô] _
& [Ô]Server=[Ô] & SERVER & [Ô];[Ô] _
& [Ô]Port=[Ô] & PORTA & [Ô];[Ô] _
& [Ô]Database=[Ô] & BD & [Ô];[Ô] _
& [Ô]UID=[Ô] & USER & [Ô];[Ô] _
& [Ô]PWD=[Ô] & SENHA & [Ô];[Ô] _
& [Ô]Option=3;[Ô]

HUBER.FABIO 31/10/2013 13:43:14
#430593
Olá Marcelo, grato pela atenção até o momento !

Baixei a ODBC 5.1 e agora aparentemente está conectando pois o comando DBCon.State está retornando 1.

Após dar um SELECT na tabela e pedir para entrar no Loop para que eu possa alimentar um grid aparece a mensagem conforme imagem.

Abaixo segue minhas linha para conexão

Dim DBCon As ADODB.Connection
Dim Cmd As ADODB.Command
Dim Rs As ADODB.Recordset
Dim strName As String

Set DBCon = New ADODB.Connection
DBCon.CursorLocation = adUseClient

DBCon.Open [Ô]Driver={MySQL ODBC 5.1 Driver};Server=localhost;Database=karamelo;User=huber.fabio;Password=249631;Option=3;[Ô]

Set Cmd = New ADODB.Command
Cmd.ActiveConnection = DBCon
Cmd.CommandType = adCmdText
Cmd.CommandText = [Ô]SELECT * FROM yibproduct[Ô]

Set Rs = Cmd.Execute
If DBCon.State = 1 Then
Do While Not Rs.EOF

Rs.MoveNext
Loop
Else
MsgBox [Ô]PROBLEMAS COM A CONEXÃO![Ô], vbCritical
End If
DBCon.Close

Set Rs = Nothing
Set Cmd = Nothing
Set DBCon = Nothing
MARCELO.TREZE 31/10/2013 13:59:07
#430594
tenta este módulo de conexão que utilizo

Global Conexao As New ADODB.Connection

Public Function Conecta(valor As Boolean)
Dim SERVER As String, BD As String, PORTA As String, USER As String, SENHA As String
Dim CON_STR As String

If Conexao.State = 1 Then
Conexao.Close
Set Conexao = Nothing
valor = True
End If

If valor = True Then

SERVER = [Ô]ipdoserver[Ô]
BD = [Ô]nomebanco[Ô]
PORTA = [Ô]3306[Ô]
USER = [Ô]usuario[Ô]
SENHA = [Ô]senha[Ô]
CON_STR = [Ô]DRIVER={MySQL ODBC 5.1 DRIVER};[Ô] _
& [Ô]Server=[Ô] & SERVER & [Ô];[Ô] _
& [Ô]Port=[Ô] & PORTA & [Ô];[Ô] _
& [Ô]Database=[Ô] & BD & [Ô];[Ô] _
& [Ô]UID=[Ô] & USER & [Ô];[Ô] _
& [Ô]PWD=[Ô] & SENHA & [Ô];[Ô] _
& [Ô]Option=3;[Ô]
With Conexao
.CursorLocation = adUseClient
.ConnectionString = CON_STR
.Open CON_STR
End With
Else
Conexao.Close
Set Conexao = Nothing
End If
End Function


como ja dito colo o codigo acima em um módulo

para fazer a conexao é fácil

no form coloque

Conecta True
[ô]declare o recordset
Dim RS as Recordset
[ô]Faça sua consulta
Set RS = Conexao.Execute([Ô]Select * From Tabela[Ô])
Do While Not RS.EOF
List1.AddItem RS!nome
RS.MoveNext
Loop
[ô] e desconecte
Conecta False

Página 1 de 2 [15 registro(s)]
Tópico encerrado , respostas não são mais permitidas