Boa tarde senhores, estou tentando utilizar o código de conexão que o Plinio Mabesi desenvolveu, porém não sei como chamar as funções.
Alguém poderia me ajudar?
Obrigado à todos
Segue o código:
'===================================================================
'Módulo ControleVinculo - Conexão com Mysql
'
'Métodos:
'1-Checar o vínculo do FrontEnd atual com um BackEnd no servidor MySql;
'2-Atualizar o vínculo do FrontEnd atual com um BackEnd no servidor MySql;
'3-Criar uma conexão com um banco de dados em um servidor MySql;
'4-Executar atualizações e consultas utilizando a conexão MySql.
'
' Autor: Plínio Mabesi
' Contato: pliniomabesi@gmail.com
' Website: www.mabesi.com
'===================================================================
Option Compare Database
Option Explicit
'Cria uma conexão ADO
Private mySqlCon As New ADODB.Connection
'Cria um recordset ADO
Private rstCon As New ADODB.Recordset
Sub conectarMySql(argUsuario As String, argSenha As String, argIp As String, _
argBd As String)
'Esta função abre a conexão com o MySql e a deixa ativa, e pode também
'abrir um recordset para testar a conexão.
Dim strConnect As String
strConnect = "driver={MySql ODBC 5.1 driver};server=" & argIp & ";uid=" & _
argUsuario & ";pwd=" & argSenha & ";database=" & argBd
mySqlCon.Open strConnect
End Sub
Function atualizaMySql(codigoSql As String) As Boolean
On Error GoTo Err_atualizaBanco
'Atualiza dados no Banco utilizando o código Sql passado à função,
'retornando verdadeiro caso a operação ocorra com sucesso
'ou falso caso ocorra algum problema
rstCon.Open codigoSql, mySqlCon, 3, 3
atualizaMySql = True
Exit_atualizaBanco:
Exit Function
Err_atualizaBanco:
atualizaMySql = False
MsgBox Err.Description
Resume Exit_atualizaBanco
End Function
Function consultaMySql(codigoSql As String) As ADODB.Recordset
On Error GoTo Err_consultaBanco
'Consulta os dados no Banco utilizando o código Sql passado à função,
'retornando um recordset com o resultado da consulta
rstCon.Open codigoSql, mySqlCon, 3, 3
Set consultaMySql = rstCon
Exit_consultaBanco:
Exit Function
Err_consultaBanco:
Set consultaMySql = Nothing
MsgBox Err.Description
Resume Exit_consultaBanco
End Function
Function ChecaVinculoMysql(strNomeTab As String, strCampo As String) As Boolean
On Error GoTo ChecaVinculo_Err
' Função que checa o vínculo da tabela strNomeTab.
' Retorna True ou False, dependendo do vínculo
' estar correto, ou não.
Dim db As Database, fld As Field, prp As Property
Dim strValor As String
Dim rstCon As Recordset
Set db = DBEngine(0)(0)
ChecaVinculoMysql = False 'Inicializa a função.
'Tenta obter um campo da tabela vinculada strNomeTab.
'Se der erro, é preciso revincular as tabelas.
Set rstCon = db.OpenRecordset(strNomeTab)
strValor = rstCon(strCampo)
'Se chegou aqui é porque o vínculo é válido.
ChecaVinculoMysql = True
ChecaVinculo_Sai:
Set db = Nothing 'libera memória.
Set fld = Nothing: Set prp = Nothing
Exit Function
Tenta_Vincular:
ChecaVinculoMysql = False
GoTo ChecaVinculo_Sai
ChecaVinculo_Err:
If Err.Number = 3219 Then
'Erro - Não conseguiu realizar a conexão.
GoTo Tenta_Vincular
Else
Resume ChecaVinculo_Sai
End If
End Function
Function atualizaVinculoMysql(argUsuario As String, argSenha As String, _
argIp As String, argBd As String) As Boolean
On Error GoTo Err_Atualiza
' Atualiza vínculos ao banco de dados informado.
' Retorna True se bem sucedida.
' varPwd (opcional) recebe a senha do arquivo mdb.
Dim bdAtual As Database, defTabela As TableDef
Dim Contador As Integer
Dim StatusTexto As String
Dim strConnect As String
Dim tabela As String
atualizaVinculoMysql = False ' Valor inicial da função.
Screen.MousePointer = 11 ' Muda cursor para ampulheta
Set bdAtual = DBEngine(0)(0)
Contador = 1 ' Ajusta contador de tabelas = 1
' Inicia a barra de progresso do Access.
StatusTexto = "Atualizando vínculos com " & argBd & "..."
SysCmd acSysCmdInitMeter, StatusTexto, bdAtual.TableDefs.Count
' Define a string da propriedade Connect.
strConnect = "ODBC;driver={MySql ODBC 5.1 driver};server=" & argIp & _
";uid=" & argUsuario & ";pwd=" & argSenha & _
";database=" & argBd
' Loop pelas tabelas do front-end.
For Each defTabela In bdAtual.TableDefs
SysCmd acSysCmdUpdateMeter, Contador 'Atualiza o progresso.
Contador = Contador + 1
' Toda tabela vinculada possui a propriedade
' Connect preenchida.
If Len(defTabela.Connect) > 0 Then
defTabela.Connect = strConnect & ";table=" & defTabela.Name
defTabela.RefreshLink ' Atualiza vínculos.
End If
Next defTabela
atualizaVinculoMysql = True ' Revinculação completa.
Sai:
SysCmd acSysCmdRemoveMeter
Set defTabela = Nothing 'libera memória
Set bdAtual = Nothing
Screen.MousePointer = 0
Exit Function
Err_Atualiza:
MsgBox Err.Description
MsgBox "Houve um problema na Atualização de vínculos..." & vbCrLf & _
vbLf & _
"Erro: " & Err.Description
Resume Sai
End Function
Alguém poderia me ajudar?
Obrigado à todos
Segue o código:
'===================================================================
'Módulo ControleVinculo - Conexão com Mysql
'
'Métodos:
'1-Checar o vínculo do FrontEnd atual com um BackEnd no servidor MySql;
'2-Atualizar o vínculo do FrontEnd atual com um BackEnd no servidor MySql;
'3-Criar uma conexão com um banco de dados em um servidor MySql;
'4-Executar atualizações e consultas utilizando a conexão MySql.
'
' Autor: Plínio Mabesi
' Contato: pliniomabesi@gmail.com
' Website: www.mabesi.com
'===================================================================
Option Compare Database
Option Explicit
'Cria uma conexão ADO
Private mySqlCon As New ADODB.Connection
'Cria um recordset ADO
Private rstCon As New ADODB.Recordset
Sub conectarMySql(argUsuario As String, argSenha As String, argIp As String, _
argBd As String)
'Esta função abre a conexão com o MySql e a deixa ativa, e pode também
'abrir um recordset para testar a conexão.
Dim strConnect As String
strConnect = "driver={MySql ODBC 5.1 driver};server=" & argIp & ";uid=" & _
argUsuario & ";pwd=" & argSenha & ";database=" & argBd
mySqlCon.Open strConnect
End Sub
Function atualizaMySql(codigoSql As String) As Boolean
On Error GoTo Err_atualizaBanco
'Atualiza dados no Banco utilizando o código Sql passado à função,
'retornando verdadeiro caso a operação ocorra com sucesso
'ou falso caso ocorra algum problema
rstCon.Open codigoSql, mySqlCon, 3, 3
atualizaMySql = True
Exit_atualizaBanco:
Exit Function
Err_atualizaBanco:
atualizaMySql = False
MsgBox Err.Description
Resume Exit_atualizaBanco
End Function
Function consultaMySql(codigoSql As String) As ADODB.Recordset
On Error GoTo Err_consultaBanco
'Consulta os dados no Banco utilizando o código Sql passado à função,
'retornando um recordset com o resultado da consulta
rstCon.Open codigoSql, mySqlCon, 3, 3
Set consultaMySql = rstCon
Exit_consultaBanco:
Exit Function
Err_consultaBanco:
Set consultaMySql = Nothing
MsgBox Err.Description
Resume Exit_consultaBanco
End Function
Function ChecaVinculoMysql(strNomeTab As String, strCampo As String) As Boolean
On Error GoTo ChecaVinculo_Err
' Função que checa o vínculo da tabela strNomeTab.
' Retorna True ou False, dependendo do vínculo
' estar correto, ou não.
Dim db As Database, fld As Field, prp As Property
Dim strValor As String
Dim rstCon As Recordset
Set db = DBEngine(0)(0)
ChecaVinculoMysql = False 'Inicializa a função.
'Tenta obter um campo da tabela vinculada strNomeTab.
'Se der erro, é preciso revincular as tabelas.
Set rstCon = db.OpenRecordset(strNomeTab)
strValor = rstCon(strCampo)
'Se chegou aqui é porque o vínculo é válido.
ChecaVinculoMysql = True
ChecaVinculo_Sai:
Set db = Nothing 'libera memória.
Set fld = Nothing: Set prp = Nothing
Exit Function
Tenta_Vincular:
ChecaVinculoMysql = False
GoTo ChecaVinculo_Sai
ChecaVinculo_Err:
If Err.Number = 3219 Then
'Erro - Não conseguiu realizar a conexão.
GoTo Tenta_Vincular
Else
Resume ChecaVinculo_Sai
End If
End Function
Function atualizaVinculoMysql(argUsuario As String, argSenha As String, _
argIp As String, argBd As String) As Boolean
On Error GoTo Err_Atualiza
' Atualiza vínculos ao banco de dados informado.
' Retorna True se bem sucedida.
' varPwd (opcional) recebe a senha do arquivo mdb.
Dim bdAtual As Database, defTabela As TableDef
Dim Contador As Integer
Dim StatusTexto As String
Dim strConnect As String
Dim tabela As String
atualizaVinculoMysql = False ' Valor inicial da função.
Screen.MousePointer = 11 ' Muda cursor para ampulheta
Set bdAtual = DBEngine(0)(0)
Contador = 1 ' Ajusta contador de tabelas = 1
' Inicia a barra de progresso do Access.
StatusTexto = "Atualizando vínculos com " & argBd & "..."
SysCmd acSysCmdInitMeter, StatusTexto, bdAtual.TableDefs.Count
' Define a string da propriedade Connect.
strConnect = "ODBC;driver={MySql ODBC 5.1 driver};server=" & argIp & _
";uid=" & argUsuario & ";pwd=" & argSenha & _
";database=" & argBd
' Loop pelas tabelas do front-end.
For Each defTabela In bdAtual.TableDefs
SysCmd acSysCmdUpdateMeter, Contador 'Atualiza o progresso.
Contador = Contador + 1
' Toda tabela vinculada possui a propriedade
' Connect preenchida.
If Len(defTabela.Connect) > 0 Then
defTabela.Connect = strConnect & ";table=" & defTabela.Name
defTabela.RefreshLink ' Atualiza vínculos.
End If
Next defTabela
atualizaVinculoMysql = True ' Revinculação completa.
Sai:
SysCmd acSysCmdRemoveMeter
Set defTabela = Nothing 'libera memória
Set bdAtual = Nothing
Screen.MousePointer = 0
Exit Function
Err_Atualiza:
MsgBox Err.Description
MsgBox "Houve um problema na Atualização de vínculos..." & vbCrLf & _
vbLf & _
"Erro: " & Err.Description
Resume Sai
End Function