Bom dia Avelino João, se a gente puder trocar algumas figurinhas vai ser legal, vi que vc esta usando stored procedures para carregar formulário continuo desvinculado com o MySQL, e eu estou apanhando um pouco, posso te enviar um email?
Sobre a sua pergunta, estou usando atualmente 5.1, e o que eu fiz foi adaptar as funções do Avelino pra buscar direto por ADO, veja a função DlookupX:
Public Function DlookupX(NomeCampo As Variant, nomeTabela As Variant, Optional filtro As String = "") As Variant
On Error GoTo trataerro
Dim strSQL As String
strSQL = "select (" & NomeCampo & ") as k from " & nomeTabela & IIf(filtro = "", ";", " where " & filtro & ";")
'AQUI JÁ TENHO MINHA CONEXÃO EM UM MÓDULO GLOBAL ABRINDO A BASE
ConLD (strSQL)
'AQUI PASSO OS DADOS DO RECORDSET
DlookupX = rsD!k
sair:
Exit Function
trataerro:
Select Case Err.Number
Case 3061: MsgBox "DLookupX - Campo inexistente...", vbInformation, NomeAplicativo
Case 3031: MsgBox "DLookupX - Conexão fechada com a base de dados...", vbInformation, NomeAplicativo
Case 3078: MsgBox "DlookupX - Tabela inexistente...", vbInformation, NomeAplicativo
Case 3464: MsgBox "DlookupX - Tipos de dados incopatíveis...", vbInformation, NomeAplicativo
Case 3021: DlookupX = Null
Case Else
MsgBox "Ocorreu um erro na aplicação." & vbCr & "Relate os dados abaixo ao suporte." & vbCr & _
"Erro Nº: " & Err.Number & vbCr & _
"Descrição do erro: " & Err.Description & vbCr & _
"Módulo: modFuncoesD" & vbCr & _
"Procedimento: DlookupX", vbExclamation, NomeAplicativo
End Select
End Function
A maior mudança foi no DFirstX e DLastX que não existem no MySQL, sendo assim mando ele ordenar pelo campo de busca ASC (quando for DFirstX) ou por DESC (quando for DLastX), limitando apenas a 1 registro, veja como ficou o DFirstX:
Public Function DFirstX(NomeCampo As Variant, nomeTabela As Variant, Optional filtro As String = "") As Variant
On Error GoTo trataerro
Dim strSQL As String
strSQL = "select " & NomeCampo & " as k from " & nomeTabela & IIf(filtro = "", "", " where " & filtro) & _
" order by " & NomeCampo & " asc limit 1"
'AQUI JÁ TENHO MINHA CONEXÃO EM UM MÓDULO GLOBAL ABRINDO A BASE
ConLD (strSQL)
'AQUI PASSO OS DADOS DO RECORDSET
DFirstX = rsD!k
sair:
Exit Function
trataerro:
Select Case Err.Number
Case 3061: MsgBox "DfirstX - Campo inexistente...", vbInformation, NomeAplicativo
Case 3031: MsgBox "DfirstX - Conexão fechada com a base de dados...", vbInformation, NomeAplicativo
Case 3078: MsgBox "DfirstX - Tabela inexistente...", vbInformation, NomeAplicativo
Case 3464: MsgBox "DfirstX - Tipos de dados incopatíveis...", vbInformation, NomeAplicativo
Case 3021: DFirstX = Null
Case Else
MsgBox "Ocorreu um erro na aplicação." & vbCr & "Relate os dados abaixo ao suporte." & vbCr & _
"Erro Nº: " & Err.Number & vbCr & _
"Descrição do erro: " & Err.Description & vbCr & _
"Módulo: modFuncoesD" & vbCr & _
"Procedimento: DFirstX", vbExclamation, NomeAplicativo
End Select
End Function