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.