CONECTAR BASE MYSQL

LUCIANORW 13/08/2010 11:47:11
#350165
Bom dia!!!
Nunca mexi com odbc, mysql, etc.
Mas resolvi dar uma mexida com isso e já de cara encontrei um problema que não consegui resolver.
No código abaixo, do Macoratti, adaptado para o access, estou tentando alterar a origem dos registros do form mas não estou conseguindo, até porque acho que esse não seja o caminho, me corrijam os que entendem do assunto.
Na verdade mesmo, eu queria criar a conexão odbc no painel de controle pelo inno setup, mas não consegui um script para isso, se alguém puder me ajudar fico grato.
Vejam o código:


Option Compare Database
Private WithEvents adoDataConn As ADODB.Connection
[ô]com withevents voce pode codificar os eventos para a conexao com
[ô]recordset e tambem pode localizar o objeto na lista de codigo
Private WithEvents rsMySQL As ADODB.Recordset
[ô]rsMySQL é o recordset que sera usado na conexao
Dim mblnAddMode As Boolean
Private Sub Form_Load()
Dim strConnect As String
[ô]esta é a string de conexao
[ô]devera conter a informacao sobre o provedor e o
[ô]caminho do banco de dados

Dim strProvider As String
[ô]guarda o nome do provedor
Dim strDataSource As String
[ô]guarda a fonte de dados
Dim strDataBaseName As String
[ô]nome do banco de dados

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 = [Ô]189.111.172.106[Ô] [ô] a localizacao do usuario (localhost)

usr_id = [Ô]root[Ô] [ô] identificacao
pass = [Ô][Ô] [ô] senha

[ô] string de conexao
[ô]strConnect = [Ô]driver={MySQL};server=[Ô] & mySqlIP & [Ô];uid=[Ô] & usr_id & [Ô];pwd=[Ô] & pass & [Ô];database=pecas[Ô]
strConnect = [Ô]DRIVER=MySQL ODBC 5.1 Driver;[Ô] & _
[Ô]Database=pecas;[Ô] & _
[Ô]UID=root;[Ô] & _
[Ô]Password=[Ô][Ô];[Ô] & _
[Ô]Server=189.111.172.106;[Ô][Ô][Ô]

Set adoDataConn = New ADODB.Connection
[ô]preparando o objeto connection

adoDataConn.CursorLocation = adUseClient
[ô]usamos um cursor do lado do cliente pois os dados
[ô]serao acessados na maquina do cliente e nao de um servidor

adoDataConn.Open strConnect
[ô]Abreo o objeto connection

[ô]lblStringdeConexao.Caption = strConnect
[ô]Exibe a string de conexao

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

rsMySQL.CursorType = adOpenStatic
[ô]Este é o unico tipo de cursor a ser usado
[ô]com um cursor localizado no lado do cliente

rsMySQL.CursorLocation = adUseClient
[ô]estamos usando o cursor no cliente

rsMySQL.LockType = adLockPessimistic
[ô]Isto garente que o registros que esta sendo editado
[ô]pode ser salvo

rsMySQL.Source = [Ô]Select * From veiculo[Ô] [ô]altere para tabela que desejar
[ô]a fonte de dados usamos uma instrucal SQL

rsMySQL.ActiveConnection = adoDataConn
[ô]O recordset precisa saber qual a conexao em uso

rsMySQL.Open
[ô]abre o recordset com isto o evento MoveComplete sera disparado

[ô]cmdAbreConexao.Enabled = False
[ô]Desabilitamos o botão para nao iniciar um nova conexao

[ô]cmdFechaConexao.Enabled = True
[ô]Permitimos fechar a conexao

[ô]Agora podemos habilitar a navegacao pelos registros do recordset
[ô]HabilitaNavegacao
[ô]cmdInclui.Enabled = True
[ô]cmdExclui.Enabled = True
[ô]cmdEdita.Enabled = True

[ô]lblBOF.Caption = rsMySQL.BOF
[ô]lblEOF.Caption = rsMySQL.EOF

Me.RecordSource = [Ô]Select * From veiculo[Ô]
End Sub

O erro aparece em Me.RecordSource = [Ô]Select * From veiculo[Ô] .
Mensamgem:Erro em tempo de execução [ô]3151[ô] ODBC -- falha na conexão [ô]pecas[ô]

Esse bd estará fora do ar no fds, pois, é no serviço de um amigo meu que estamos testando pela net.
Att
Luciano
RICATOM 13/08/2010 13:31:35
#350171
Ip, nome do bd, usuario e senha estão corretos?

Veja http://www.connectionstrings.com/mysql#p31
LUCIANORW 13/08/2010 16:10:21
#350189
Boa tarde Ricardo!!!
Sim, está tudo ok.
Pelo exemplo do Macoratti (que é [Ô]desacoplado[Ô], em vb6) ele funciona legal.
Att
Luciano
MSMJUDAS 13/08/2010 16:33:50
#350194
Já tentou criar uma conexão ODBC pelo [Ô]Fontes de Dados (ODBC)[Ô] do Windows e conectar?
LUCIANORW 13/08/2010 16:38:26
#350195
Boa tarde!!!
Achei um exemplo aqui no fórum, vejam como ficou e ta funcionando legal.
Luciano

Option Compare Database
Private Declare Function SQLConfigDataSource Lib [Ô]ODBCCP32.DLL[Ô] (ByVal _
hwndParent As Long, ByVal fRequest As Long, ByVal lpszDriver As String, _
ByVal lpszAttributes As String) As Long

Private Declare Function RegCloseKey Lib [Ô]advapi32[Ô] (ByVal hKey As Long) As Long

Private Declare Function RegOpenKeyEx Lib [Ô]advapi32[Ô] Alias [Ô]RegOpenKeyExA[Ô] _
(ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, _
ByVal samDesired As Long, ByRef phkResult As Long) As Long

Const REG_SZ = 1
Const KEY_ALL_ACCESS = &H2003F
Const HKEY_CURRENT_USER = &H80000001

Const ODBC_ADD_DSN = 1 [ô]4 [ô] cria o DSN
Const ODBC_REMOVE_DSN = 3 [ô]6 [ô] excluir o DSN
Sub CriaDSN(ByVal pDSN As String, pServer As String, pDataBase As String, pUsuario As String, pSenha As String)
Dim strAttributes As String
Dim sDBQ As String
Dim lngRet As Long
Dim hKey As Long
Dim regValue As String
Dim valueType As Long
[ô] consulta o registro para verificar se o DSN já esta instalado abre a chave
If RegOpenKeyEx(HKEY_CURRENT_USER, [Ô]Software\ODBC\ODBC.INI\[Ô] & pDSN, 0, KEY_ALL_ACCESS, hKey) = 0 Then
[ô] fecha a chave
RegCloseKey hKey
[ô]Exit Sub
Else
strAttributes = [Ô]SERVER=[Ô] & pServer & Chr(0)
strAttributes = strAttributes & [Ô]DSN=[Ô] & pDSN & Chr(0)
strAttributes = strAttributes & [Ô]DATABASE=[Ô] & pDataBase & Chr(0)
strAttributes = strAttributes & [Ô]User=[Ô] & pUsuario & Chr(0)
strAttributes = strAttributes & [Ô]Password=[Ô] & pSenha & Chr(0)
lngRet = SQLConfigDataSource(0&, ODBC_ADD_DSN, [Ô]MySQL ODBC 5.1 Driver[Ô], strAttributes)
If lngRet Then
[ô]MsgBox [Ô]DSN Criada[Ô]
Else
MsgBox [Ô]Falha ao Criar[Ô]
End If
End If
End Sub
Sub teste()
[ô]CriaDSN [Ô]nomeODBC[Ô], [Ô]192.168.0.1[Ô], [Ô]nomebanco[Ô], [Ô]usuario[Ô], [Ô]senha[Ô]
CriaDSN [Ô]pecas[Ô], [Ô]189.111.172.106[Ô], [Ô]pecas[Ô], [Ô]root[Ô], [Ô][Ô]
End Sub
NETMANIA 13/08/2010 16:56:19
#350198
Qual é a versão do MySQL que você está tentando conectar? Para conexão funcionar corretamente você tem que ter a mesma versão do driver MyODC instalado no equipamento se não da problema.

Exemplo: Se você estiver usando o MySQL 5.x, você deverá usar o MyODC versão 5
XXXANGELSXXX 15/08/2010 13:10:00
#350305
amigo.. vou te mandar a forma que eu conecto.. ok???

[ô]Referência a Microsoft ActiveX 2.8 Object Library

Public Conexao As ADODB.Connection

Public Function Conecta(ByVal Valor As Boolean)
Dim SERVIDOR, USUARIO, SENHA, PORTA, basededados As String
If Valor = True Then
Set Conexao = New Connection
SERVIDOR = ReadINI([Ô]Conexao[Ô], [Ô]SERVIDOR[Ô], App.Path & [Ô]\ConfigServidor.ini[Ô])
basededados = [Ô]crmvilanova[Ô]
PORTA = ReadINI([Ô]Conexao[Ô], [Ô]PORTA[Ô], App.Path & [Ô]\ConfigServidor.ini[Ô])
USUARIO = ReadINI([Ô]Conexao[Ô], [Ô]USUARIO[Ô], App.Path & [Ô]\ConfigServidor.ini[Ô])
SENHA = [Ô]master4lj@[Ô]
CON_STR = [Ô]DRIVER={MySQL ODBC 5.1 DRIVER};[Ô] _
& [Ô]Server=[Ô] & SERVIDOR & [Ô];[Ô] _
& [Ô]Port=[Ô] & PORTA & [Ô];[Ô] _
& [Ô]Database=[Ô] & basededados & [Ô];[Ô] _
& [Ô]UID=[Ô] & USUARIO & [Ô];[Ô] _
& [Ô]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

lembrando que esse readini ai estou buscando os dados de um arquivo ini.. vc pode trocar.. colocar entre aspas o valor que vc quer.. igual fiz .. basededados = [Ô]crmvilanova[Ô]

no load do form.. vc abre a conexao, ou senao no submain... assim

CONECTA TRUE

depois disso.. e so trabalhar normalment.e. o.k..
Tópico encerrado , respostas não são mais permitidas