CONECTAR BASE MYSQL
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:
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
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
Ip, nome do bd, usuario e senha estão corretos?
Veja http://www.connectionstrings.com/mysql#p31
Veja http://www.connectionstrings.com/mysql#p31
Boa tarde Ricardo!!!
Sim, está tudo ok.
Pelo exemplo do Macoratti (que é [Ô]desacoplado[Ô], em vb6) ele funciona legal.
Att
Luciano
Sim, está tudo ok.
Pelo exemplo do Macoratti (que é [Ô]desacoplado[Ô], em vb6) ele funciona legal.
Att
Luciano
Já tentou criar uma conexão ODBC pelo [Ô]Fontes de Dados (ODBC)[Ô] do Windows e conectar?
Boa tarde!!!
Achei um exemplo aqui no fórum, vejam como ficou e ta funcionando legal.
Luciano
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
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
Exemplo: Se você estiver usando o MySQL 5.x, você deverá usar o MyODC versão 5
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..
[ô]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