Propriedade Form.Recordset (Access)
Retorna ou define o objeto ADO Recordset ou DAO Recordset que representa a fonte de registro do objeto especificado. Object de leitura/gravação.
Sintaxe
expressão. Registros
expressão Uma variável que representa um objeto Form.
Comentários
A propriedade Recordset retorna o objeto Recordset que fornece os dados que estão sendo navegados em um formulário, relatório, controle de caixa de listagem ou controle de caixa de combinação. Se um formulário for baseado em uma consulta, por exemplo, referindo-se a propriedade Recordset é o equivalente a clonagem de um objeto Recordset usando a mesma consulta. No entanto, ao contrário de usar a propriedade RecordsetClone, alterar o registro atual no recordset retornado pela propriedade Recordset do formulário também define o registro atual do formulário.
O comportamento de leitura/gravação da propriedade Recordset é determinado pelo tipo de conjunto de registros (ADO ou DAO) e o tipo de dados (Access ou SQL) contidos no conjunto de registros identificado pela propriedade.
Tipo do conjunto de registros | Baseado em dados SQL (Structure Query Language, linguagem de consulta estruturada) | Baseado em dados armazenados pelo mecanismo de banco de dados do Access |
---|---|---|
ADO | Leitura/gravação | Leitura/gravação |
DAO | N/D | Leitura/gravação |
O exemplo a seguir abre um formulário, abre um recordset e vincula o formulário ao conjunto de registros, definindo a propriedade Recordset do formulário como o objeto Recordset recentemente criado.
Global rstSuppliers As ADODB.Recordset
Sub MakeRW()
DoCmd.OpenForm "Suppliers"
Set rstSuppliers = New ADODB.Recordset
rstSuppliers.CursorLocation = adUseClient
rstSuppliers.Open "Select * From Suppliers", _
CurrentProject.Connection, adOpenKeyset, adLockOptimistic
Set Forms("Suppliers").Recordset = rstSuppliers
End Sub
Use a propriedade Recordset para:
Use métodos com o objeto Recordset que não têm suporte direto nos formulários. Por exemplo, você pode usar a propriedade Recordset com o ADO Localizar ou métodos Localizar do DAO em uma caixa de diálogo personalizada para localizar um registro.
Embrulhe uma transação (que pode ser revertida) em torno de um conjunto de edições que afetam vários formulários.
Alterando a propriedade Recordset de um formulário também pode alterar as propriedades RecordSource, RecordsetType e RecordLocks. Além disso, algumas propriedades relacionadas a dados podem ser substituídas, por exemplo, o filtro, FiltroAtivado, OrderBy e OrderByOn propriedades.
Chamar o método Requery do conjunto de registros de um formulário (por exemplo,
Forms(0).Recordset.Requery
) pode causar o formulário para se tornar não acoplado. Para atualizar os dados em um formulário vinculado a um conjunto de registros, defina a propriedade RecordSource do formulário como ela mesma:Forms(0).RecordSource = Forms(0).RecordSource
.Associar vários formulários a um conjunto de dados comum. Isso permite a sincronização de vários formulários. Por exemplo:
Set Me.Recordset = Forms!Form1.Recordset
Observação
Quando um formulário é associado a um conjunto de registros, ocorre um erro se você usar o comando Filtrar por Formulário .
Exemplo
O exemplo a seguir usa a propriedade Recordset para criar uma nova cópia do objeto Recordset do formulário atual e imprime os nomes dos campos contidos na janela Depuração.
Sub Print_Field_Names()
Dim rst As DAO.Recordset, intI As Integer
Dim fld As Field
Set rst = Me.Recordset
For Each fld in rst.Fields
' Print field names.
Debug.Print fld.Name
Next
End Sub
O exemplo a seguir usa a propriedade Recordset e o objeto Recordset para sincronizar um conjunto de registros com o registro atual do formulário. Quando um nome de empresa é selecionado de uma caixa de combinação, o método FindFirst é usado para localizar o registro dessa empresa, fazendo com que o formulário exiba o registro encontrado.
Sub SupplierID_AfterUpdate()
Dim rst As DAO.Recordset
Dim strSearchName As String
Set rst = Me.Recordset
strSearchName = CStr(Me!SupplierID)
rst.FindFirst "SupplierID = " & strSearchName
If rst.NoMatch Then
MsgBox "Record not found"
End If
rst.Close
End Sub
O código a seguir ajuda a determinar que tipo de recordset é retornado pela propriedade Recordset em diferentes condições.
Sub CheckRSType()
Dim rs as Object
Set rs=Forms(0).Recordset
If TypeOf rs Is DAO.Recordset Then
MsgBox "DAO Recordset"
ElseIf TypeOf rs is ADODB.Recordset Then
MsgBox "ADO Recordset"
End If
End Sub
Suporte e comentários
Tem dúvidas ou quer enviar comentários sobre o VBA para Office ou sobre esta documentação? Confira Suporte e comentários sobre o VBA para Office a fim de obter orientação sobre as maneiras pelas quais você pode receber suporte e fornecer comentários.