Boa noite amigo vejo que esta usando o codigo da Kartofel né tb estava usando ele.
Para que carregue um subformulario e necessario carregar uma tabela temporaria para que exibi os registros.
No caso vc queria que no subformulario fosse exibido somente dados especificos ou todos os dados pois o código abaixo tras os dados do mysql para uma tabela access
Public Function Carrega_Clientes()
Dim objRSC As DAO.Recordset
Call Conexao_Open("select * from tblcliente;") ' pega os dados da tabela clientes no mysql sem filtro ele abre carregando todos clientes.
' Ele deleta a tabela para ficar limpa
CurrentDb.Execute "delete * from temp_Cliente_Login;"
' Abre a tabela novamente e adiciona os dados novamente
Set objRSC = CurrentDb.OpenRecordset("temp_Cliente_Login", ,
While (Not rs.EOF)
' aqui vai os campos tanto da tabela no access quanto no mysql de preferencia que seja o mesmo nome com os mesmos tipos de dados.
objRSC.AddNew
objRSC.Fields("Cod_Cliente").Value = rs.Fields("Cod_Cliente").Value
objRSC.Fields("Status").Value = rs.Fields("Status").Value
objRSC.Fields("Razao_Social").Value = rs.Fields("Razao_Social").Value
objRSC.Fields("CNPJ_CPF").Value = rs.Fields("CNPJ_CPF").Value
objRSC.Fields("Senha").Value = rs.Fields("Senha").Value
objRSC.Update
rs.MoveNext 'vai para o proximo registro
Wend
rs.Close 'fecha o recorset
cn.Close 'fecha o banco de dados
Rem fechando a tabela temporária aberta na memória do vba
objRSC.Close: Set objRSC = Nothing
End Function
Chama ela usando Call Carrega_Clientes
Agora se você quiser pegar somente um cliente especifico. Usa com filtro
vc pode colocar esse código ao abrir um formulário por exemplo.
Public Function Carrega_Clientes()
On Error Resume Next
Dim objRSC As DAO.Recordset
Call Conexao_Open("select * from tblcliente where CNPJ_CPF=" & Me.txtlogin) ' aqui vai o filtro para o cliente especifico como pra mim um cpnj digitado
CurrentDb.Execute "delete * from temp_Cliente_Login;"
Set objRSC = CurrentDb.OpenRecordset("temp_Cliente_Login", ,
While (Not rs.EOF)
objRSC.AddNew
objRSC.Fields("Cod_Cliente").Value = rs.Fields("Cod_Cliente").Value
objRSC.Fields("Status").Value = rs.Fields("Status").Value
objRSC.Fields("Razao_Social").Value = rs.Fields("Razao_Social").Value
objRSC.Fields("CNPJ_CPF").Value = rs.Fields("CNPJ_CPF").Value
objRSC.Fields("Senha").Value = rs.Fields("Senha").Value
objRSC.Fields("Limite_Credito").Value = rs.Fields("Limite_Credito").Value
objRSC.Fields("Desconto").Value = rs.Fields("Desconto").Value
objRSC.Fields("Tipo_Cliente").Value = rs.Fields("Tipo_Cliente").Value
objRSC.Fields("Endereco").Value = rs.Fields("Endereco").Value
objRSC.Fields("N").Value = rs.Fields("N").Value
objRSC.Fields("Bairro").Value = rs.Fields("Bairro").Value
objRSC.Fields("Cep").Value = rs.Fields("Cep").Value
objRSC.Fields("Cidade").Value = rs.Fields("Cidade").Value
objRSC.Fields("UF").Value = rs.Fields("UF").Value
objRSC.Fields("Telefone1").Value = rs.Fields("Telefone1").Value
objRSC.Fields("C_Endereco").Value = rs.Fields("C_Endereco").Value
objRSC.Fields("C_N").Value = rs.Fields("C_N").Value
objRSC.Fields("C_Cep").Value = rs.Fields("C_Cep").Value
objRSC.Fields("C_Cidade").Value = rs.Fields("C_Cidade").Value
objRSC.Fields("C_UF").Value = rs.Fields("C_UF").Value
objRSC.Fields("C_Telefone1").Value = rs.Fields("C_Telefone1").Value
objRSC.Fields("C_Contato").Value = rs.Fields("C_Contato").Value
objRSC.Fields("C_Email").Value = rs.Fields("C_Email").Value
objRSC.Fields("Aviso_Sonoro").Value = rs.Fields("Aviso_Sonoro").Value
objRSC.Update
rs.MoveNext 'vai para o proximo registro
Wend
rs.Close 'fecha o recorset
cn.Close 'fecha o banco de dados
Rem fechando a tabela temporária aberta na memória do vba
objRSC.Close: Set objRSC = Nothing
End Function
Porem modifiquei tambem usando listbox nos meus e o procedimento que uso para fazer um recorset uso as Store procedure que ao em vez de vc fazer o recordset no programa vc faz no servidor somente passando o parametro para ele e ele retorna a resposda e carrega a listbox aliviando assim a memoria do programa.
uma dica e se por ventura no cadastro vc for usar alguma combox para ela carrega vc tem que mudar o modulo parametros dados
'---------------------------------------------------------------------------------------
' PROCEDIMENTO: Lista_Select
' DESCRIÇÃO: Carrega o registro selecionado
'---------------------------------------------------------------------------------------
Public Sub Lista_Select(csql, Formy)
Call Conexao_Open(csql)
Dim FormAberto As Form
Dim Controle As control
Set FormAberto = Forms(Formy)
For Each Controle In FormAberto
If Controle.Tag = 2 Then
If Controle.ControlType = acTextBox Then
FormAberto.Controls(Controle.Name) = rs(Controle.Name).Value
'ElseIf Controle.ControlType = acListBox Then
'FormAberto.Controls(Controle.Name) = rs(Controle.Name).Value
ElseIf Controle.ControlType = acComboBox Then
FormAberto.Controls(Controle.Name) = rs(Controle.Name).Value
End If
End If
Next
rs.Close 'Encerra a conexão com o recordeset
cn.Close 'Encerra a conexão com a base de dados
End Sub
Por ele vem com padrao para somente carregar campos Textbox