- Código:
'***********************************************************
'Função para popular campos em subformulário desacoplado ou formulários contínuos
'usando DAO.Recordset
'
'By Charles Sestrem
'chsestrem@gmail.com
'Data Criação 01/01/2013
'
'Este procedimento apesar de ser para Form desacoplado, mantém o banco aberto
'pois o mesmo depende do recordset para se manter ativo.
'
'Requisitos necessários:
'1 - O subformulário ou formulário não deverá ter Fonte de Registro na Aba "Dados"
'
'2 - O subformulário ou formulário contínuo devem ter na propriedade "Outra",
'no elemento "Nome", os nomes dos campos idênticos ao da tabela
'
'3 - O Formulário ou subformulário não deverá ter campos invisíveis
'Se tiver campos invisíveis deverá ser acrescentado um IF.
'
'Exemplo de uso no evento ao carregar
'Call PopulaForm(Me,"Minha_Tabela")
'
'Exemplo de uso para uma Combo de pesquisa e um Subformulário
'
'strsql = ""
'strsql = "SELECT * FROM Tabela WHERE id = " & 'Me.CmbPesquisa.Column(0) & "; "
'Call PopulaForm(Forms!Frm_Principal!Sub_Formulário.Form, strsql)
'
'
Public Function PopulaForm(Frm As Form, StrTabela As String)
Dim i As Integer
Dim c As control
On Error Resume Next
Set rs = CurrentDb.OpenRecordset(StrTabela, dbOpenDynaset)
For Each c In Frm.Controls
For i = 1 To rs.Fields.Count
If c.Name = rs.Fields(i - 1).Name Then
c.ControlSource = rs.Fields(i - 1).Name
Set Frm.Recordset = rs
End If
Next i
Next c
End Function
Sds,