Olá pessoal,
Acabei de descobrir a função do mestre Avelino (DlookupX).
Primeiramente gostaria de parabenizar o mestre!
Agora eu fiz uns testes utilizando ADO/MySQL e a função está funcionando adequadamente, desde que o primeiro critério seja um campo apenas.
Por Exemplo:
DLookupX("Campo1", "Tabela1")
Se formos utilizar mais de um campo, a função retorna Zero.
DLookupX("Campo1 & '-' & Campo2", "Tabela1")
Lembrado que a função original Dlookup e também a DlookupX com acesso ao recordset via DAO permite essa situação.
Alguém já testou com ADO/MySQL ou ADO/ACCDB?
Funciona também?
Agradeço desde já a todos vocês
Segue a função modificada para testes
Acabei de descobrir a função do mestre Avelino (DlookupX).
Primeiramente gostaria de parabenizar o mestre!
Agora eu fiz uns testes utilizando ADO/MySQL e a função está funcionando adequadamente, desde que o primeiro critério seja um campo apenas.
Por Exemplo:
DLookupX("Campo1", "Tabela1")
Se formos utilizar mais de um campo, a função retorna Zero.
DLookupX("Campo1 & '-' & Campo2", "Tabela1")
Lembrado que a função original Dlookup e também a DlookupX com acesso ao recordset via DAO permite essa situação.
Alguém já testou com ADO/MySQL ou ADO/ACCDB?
Funciona também?
Agradeço desde já a todos vocês
Segue a função modificada para testes
- Código:
Public Function DlookupX(NomeCampo As Variant, nomeTabela As Variant, Optional filtro As String = "") As Variant
Dim strConnect As String
Dim strSql 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
On Error GoTo trataerro
mySqlIP = "127.0.0.1" ' a localizacao do usuario (localhost)
strDataBaseName = "movedb"
usr_id = "xxxxxx" ' identificacao
pass = "xxxxxx" ' senha
strConnect = "driver={MySQL ODBC 5.1 Driver};server=" & mySqlIP & ";uid=" & usr_id & ";pwd=" & pass & ";database=" & strDataBaseName
Set adoDataConn = New ADODB.Connection
adoDataConn.CursorLocation = adUseClient
adoDataConn.Open strConnect
Set rsMySQL = New ADODB.Recordset
rsMySQL.CursorType = adOpenStatic
rsMySQL.CursorLocation = adUseClient
rsMySQL.LockType = adLockReadOnly
strSql = "Select (" & NomeCampo & ") AS k FROM " & nomeTabela & IIf(filtro = "", ";", " WHERE " & filtro & ";")
rsMySQL.Source = strSql
rsMySQL.ActiveConnection = adoDataConn
rsMySQL.Open
DlookupX = rsMySQL("K")
rsMySQL.Close
Set rsMySQL = Nothing
sair:
Exit Function
trataerro:
Select Case Err.Number
Case 3061: MsgBox "DLookupX - Campo inexistente...", vbInformation, "Aviso"
Case 3031: MsgBox "DLookupX - Conexão fechada com a base de dados...", vbInformation, "Aviso"
Case 3078: MsgBox "DlookupX - Tabela inexistente...", vbInformation, "Aviso"
Case 3464: MsgBox "DlookupX - Tipos de dados incopatíveis...", vbInformation, "Aviso"
Case 3021: DlookupX = Null
Case Else
MsgBox "DLookupX - " & Err.Description & " Nº: " & Err.Number
End Select
End Function
Última edição por enduros em 22/8/2013, 10:08, editado 1 vez(es)