Partilhar via


Propriedade ComboBox.Recordset (Access)

Devolve ou define o objeto Conjunto de Registos ADO ou Conjunto de Registos DAO que representa a origem de registos do objeto especificado. Object de leitura/gravação.

Sintaxe

expressão. Conjunto de registos

expressão Uma variável que representa um objeto ComboBox .

Comentários

A propriedade Conjunto de registos devolve o objeto Conjunto de registos que fornece os dados que estão a ser navegados num formulário, relatório, controlo de caixa de listagem ou controlo 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

Utilize a propriedade Conjunto de registos para:

  • Utilize métodos com o objeto Conjunto de registos que não são suportados diretamente em 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.

  • Encapsular 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 num formulário vinculado a um conjunto de registos, defina a propriedade OrigemDosRegistos do formulário para o próprio: Forms(0).RecordSource = Forms(0).RecordSource.

  • Vincular 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 está vinculado a um conjunto de registos, ocorre um erro se utilizar 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 seguinte utiliza a propriedade Conjunto de registos e o objeto Conjunto de registos para sincronizar um conjunto de registos com o registo 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.