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
expresión Requerido. 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