Compartir a través de


Propiedad Form.Recordset (Access)

Devuelve o establece el objeto Recordset o Recordset de ADO que representa el origen del registro para el objeto especificado. Lectura/EscrituraObjeto.

Sintaxis

expresión. Recordset

expresión Variable que representa un objeto Form.

Comentarios

La propiedad Recordset devuelve el objeto Recordset que proporciona los datos que se examinan en un formulario, informe, control de cuadro de lista o control de cuadro combinado. Si un formulario se basa en una consulta, por ejemplo, hacer referencia a la propiedad Recordset equivale a clonar un objeto Recordset mediante el uso de la misma consulta. Sin embargo, a diferencia del uso de la propiedad RecordsetClone, cambiar qué registro es el actual en el conjunto de registros devuelto por la propiedad Recordset del formulario también configura el registro actual del formulario.

El comportamiento de lectura/escritura de la propiedad Recordset viene determinado por el tipo de conjunto de registros (ADO o DAO) y el tipo de datos (Access o SQL) contenidos en el conjunto de registros identificado por la propiedad.

Tipo de conjunto de registros Basado en datos SQL Basado en los datos almacenados por el motor de base de datos de Access
ADO Lectura y escritura Lectura y escritura
DAO N/D Lectura y escritura

El siguiente ejemplo abre un formulario, abre un conjunto de registros y enlaza el formulario con el conjunto de registros configurando la propiedad Recordset del formulario en el objeto Recordset recién creado.

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 la propiedad Recordset para:

  • Use métodos con el objeto Recordset que no se admiten directamente en formularios. Por ejemplo, puede usar la propiedad Recordset con los métodos ADO Find o DAO Find en un cuadro de diálogo personalizado para buscar un registro.

  • Encapsular una transacción (que se puede revertir) en torno a un conjunto de ediciones que afectan a varios formularios.

    Si se cambia la propiedad Recordset de un formulario también se podrían cambiar las propiedades RecordSource, RecordsetType y RecordLocks. Además, también podrían invalidarse ciertas propiedades relacionadas con los datos, por ejemplo, las propiedades Filter, FilterOn, OrderBy y OrderByOn.

    Si se llama al método Requery del conjunto de registros de un formulario (por ejemplo, Forms(0).Recordset.Requery) es posible que el formulario se desenlace. Para actualizar los datos de un formulario enlazado a un conjunto de registros, establezca la propiedad RecordSource del formulario en sí misma: Forms(0).RecordSource = Forms(0).RecordSource.

  • Enlazar varios formularios a un conjunto de datos común. Esto permite la sincronización de varios formularios. Por ejemplo:

      Set Me.Recordset = Forms!Form1.Recordset
    

Nota:

Cuando un formulario está enlazado a un conjunto de registros, se produce un error si se usa el comando Filtrar por formulario .

Ejemplo:

El siguiente ejemplo usa la propiedad Recordset para crear una nueva copia del objeto Recordset a partir del formulario actual y posteriormente imprime los nombres de los campos en la ventana Debug.

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

En el ejemplo siguiente se usa la propiedad Recordset y el objeto Recordset para sincronizar un conjunto de registros con el registro actual del formulario. Cuando se selecciona un nombre de compañía desde un cuadro combinado, se usa el método FindFirst para localizar el registro para dicha compañía, haciendo que el formulario muestre el 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

El siguiente código ayuda a determinar el tipo de conjunto de registros que devuelve la propiedad Recordset bajo diferentes condiciones.

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

Soporte técnico y comentarios

¿Tiene preguntas o comentarios sobre VBA para Office o esta documentación? Vea Soporte técnico y comentarios sobre VBA para Office para obtener ayuda sobre las formas en las que puede recibir soporte técnico y enviar comentarios.