Propriedade Report.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 Report .

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.

Observação

Você não pode associar relatórios a conjuntos de registros ADO. Você deve usar DAO senão despejar a propriedade recordset para uma tabela temporária e, em seguida, vincular o relatório à tabela temporária.

O comportamento leitura/gravação de Recordset é determinado pelo tipo do conjunto de registros (ADO ou DAO) e o tipo de dado (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.