CONSULTA APÓS CONEXÃO MYSQL REMOTO
Utilizo access a muitos anos e estou passando agora para mysql remoto...
Usei a conexão que o Marcelo Treze indicou (cópia abaixo), e funcionou normal
Citação:
Public Conexao As New ADODB.Connection
Public Function Conecta(ByVal Valor As Boolean)
Dim CON_STR As String
Dim SERVER As String
Dim USER As String
Dim SENHA As String
Dim PORTA As String
Dim BD As String
[ô]verifica se a conexao está aberta e fecha para evitar erros
If Conexao.State = 1 Then
Conexao.Close
Set Conexao = Nothing
Valor = True
End If
If Valor = True Then
SERVER = [Ô]201.20.24.80[Ô]
BD = [Ô]nome_do_banco[Ô]
PORTA = [Ô]3306[Ô]
USER = [Ô]nome_de_usuário[Ô]
SENHA = [Ô]senha[Ô]
CON_STR = [Ô]DRIVER={MySQL ODBC 3.51 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
Quando coloco conexao (true) ele não dá erro, tá ok.
O problema é que acho que estou pensando localmente, e não sei como [Ô]traduzir[Ô] o código abaixo que sempre uso:
[txt-color=#0000f0] Dim WsUm As Workspace
Dim arquivo As Database
Dim Sql As String
Dim RsTemp As Recordset
Set WsUm = Workspaces(0)
Set arquivo = WsUm.OpenDatabase(([Ô]C:\Users\Adm\Desktop\Temp\banco.mdb[Ô]), False, False, [Ô];pwd=senha[Ô])
Sql = [Ô]Select * from Cliente[Ô]
Set RsTemp = arquivo.OpenRecordset(Sql)
MsgBox RsTemp!Nome
MsgBox RsTemp!Endereco
[/txt-color]
Quero usar a mesma instrução acima, porém, no mysql remoto
BD = [Ô]nome_do_banco[Ô]
PORTA = [Ô]3306[Ô]
USER = [txt-color=#e80000] [Ô]O PROVEDOR IRA TE FORNECER[Ô][/txt-color]
No código abaixo:
[txt-color=#0000f0] Conecta (True) [ô]faz a conexão com o banco de dados
Dim Rs As Recordset
Set Rs = Conexao.Execute([Ô]SELECT * FROM tabela[Ô])[/txt-color]
dá o seguinte resultado
[txt-color=#e80000] [MySQL][ODBC 3.51 Driver][mysql-5.5.40-36.1]Table [ô]dominio_banco.tabela[ô] doesn't exist[/txt-color]
até aà tudo bem, porque não existe a tabela com o nome [Ô]tabela[Ô], mas coloco * FROM Cliente retorna
[txt-color=#e80000]
Rum-time error [ô]13[ô]
type mismatch
[/txt-color]
Coloque em um modulo
Public CON As ADODB.Connection
Public rs As ADODB.Recordset
Sub Connect()
On Error GoTo tratado
Set CON = CreateObject([Ô]ADODB.Connection[Ô])
Set rs = CreateObject([Ô]ADODB.Recordset[Ô])
Dim sConn As String
sConn = [Ô]DRIVER={MySQL ODBC 3.51 Driver};[Ô]
sConn = sConn & [Ô]SERVER=[Ô][txt-color=#e80000]ip do servidor[/txt-color];[Ô]
sConn = sConn & [Ô]USER=[txt-color=#e80000]user[/txt-color];[Ô]
sConn = sConn & [Ô]PWD=123;[Ô]
sConn = sConn & [Ô]database=[txt-color=#e80000]base de dados[/txt-color][Ô]
CON.Open sConn [ô]Abre o Banco de Dados
rs.CursorLocation = adUseClient
tratado:
End Sub
Sub Disconnect()
On Error GoTo TrataErro10
rs.Close
CON.Close
TrataErro10:
If Err.Number = 3265 Then
MsgBox [Ô]Erro de dados[Ô]
End If
Set rs = Nothing
Set CON = Nothing
End Sub
No evento clique
Connect
rs.Open [Ô]SELECT * FROM [txt-color=#e80000]tabela[/txt-color][Ô], CON, adOpenStatic, adLockOptimistic
disconnect
Coloquei mas agora a conexão não funciona... Vi que o código também não possui a porta
[txt-color=#0000f0] Conecta (True)
Dim RsRemoto As ADODB.Recordset
Set RsRemoto = New ADODB.Recordset
RsRemoto.Open [Ô]SELECT * FROM Cliente[Ô], Conexao, adOpenStatic, adLockOptimistic
MsgBox RsRemoto!cep
Conecta (False)[/txt-color]
[txt-color=#e80000]O problema é que demorou 29 segundos para retornar ... será que estou fazendo algo errado ???[/txt-color]