Recordset (propiedad)

Se aplica a

Objeto ComboBox

Objeto Form

Objeto ListBox

Objeto Report

Devuelve o establece el objeto Recordset de ADO o Recordset de DAO que representa el origen de registros para el formulario, informe, control de cuadro de lista o control de cuadro combinado especificado. Lectura y escritura.

expresión.Recordset

Se requiere expresión. Una expresión que devuelve uno de los objetos de la lista "Se aplica a".

Observaciones

La propiedad Recordset devuelve el objeto de conjunto de registros que proporciona los datos que se buscan 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 es equivalente a copiar un objeto Recordset mediante la misma consulta. Pero a diferencia de la propiedad RecordsetClone, cambiar el registro actual en el conjunto de registros devuelto por la propiedad Recordset del formulario también establece el registro actual del formulario.

Esta propiedad solo está disponible al usar código de Visual Basic para Aplicaciones (VBA).

El comportamiento de lectura y escritura de la propiedad Recordset está determinado por el tipo 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 datos de Access

ADO

Lectura y escritura

Lectura y escritura

DAO

N/D

Lectura y escritura

En el ejemplo siguiente se abre un formulario, se abre un conjunto de registros y, después, se enlaza el formulario al conjunto de registros estableciendo la propiedad Recordset del formulario en el objeto Recordset recién creado.

Global rstSuppliers As ADODB.RecordsetSub MakeRW()DoCmd.OpenForm "Suppliers"Set rstSuppliers = New ADODB.RecordsetrstSuppliers.CursorLocation = adUseClientrstSuppliers.Open "Select * From Suppliers", _CurrentProject.Connection, adOpenKeyset, adLockOptimisticSet Forms("Suppliers").Recordset = rstSuppliersEnd Sub

Use la propiedad Recordset:

  • Para 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

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

  • Para encapsular una transacción (que se puede deshacer) en un conjunto de cambios que afectan a varios formularios.

Cambiar la propiedad Recordset de un formulario también puede cambiar las propiedades RecordSource, RecordsetType y RecordLocks. Además, algunas propiedades relacionadas con los datos se pueden invalidar, por ejemplo, las propiedades Filter, FilterOn, OrderBy y OrderByOn.

Llamar al método Requery del conjunto de registros de un formulario (por ejemplo, Forms(0).Recordset.Requery) puede hacer que esté sin enlazar. 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).

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

Ejemplo

En el ejemplo siguiente se usa la propiedad Recordset para crear una copia del objeto Recordset desde el formulario actual y luego se imprimen los nombres de los campos en la ventana de depuración.

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 empresa en un cuadro combinado, se usa el método FindFirst para buscar el registro de esa empresa, lo que hace 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 código siguiente le ayudará a determinar qué tipo de conjunto de registros devuelve la propiedad Recordset en 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
Ampliar sus conocimientos
Explorar los cursos
Obtener nuevas características primero
Únase a los participantes de Office Insider

¿Le ha sido útil esta información?

¡Gracias por sus comentarios!

Gracias por sus comentarios. Quizá le interese ponerse en contacto con uno de nuestros agentes de soporte de Office.

×