Share via


Objeto de conjunto de registros (ADO)

Representa el conjunto de registros completo de una tabla base o los resultados de un comando ejecutado. En cualquier momento, el objeto Recordset hace referencia a un único registro dentro del conjunto como registro actual.

Comentarios

Los objetos Recordset se usan para manipular datos de un proveedor. Cuando se usa ADO, los datos se manipulan casi completamente mediante objetos Recordset. Todos los objetos Recordset constan de registros (filas) y campos (columnas). Según la funcionalidad admitida por el proveedor, es posible que algunos métodos o propiedades Recordset no estén disponibles.

ADODB. Recordset es el ProgID que se debe usar para crear un objeto Recordset. Aplicaciones existentes que hacen referencia al ADOR.Recordset obsoleto. ProgID seguirá funcionando sin compilar de nuevo, pero el nuevo desarrollo debe hacer referencia a ADODB.Recordset.

Hay cuatro tipos de cursor diferentes definidos en ADO:

  • Cursor dinámico: permite ver adiciones, cambios y eliminaciones de otros usuarios. Permite todos los tipos de movimiento a través del objeto Recordset que no se basa en marcadores. Permite marcadores si el proveedor los admite.

  • Cursor de conjunto de claves: se comporta como un cursor dinámico, salvo que impide que vea los registros que otros usuarios agregan, e impide el acceso a los registros que otros usuarios eliminan. Los cambios de datos de otros usuarios seguirán siendo visibles. Siempre admite marcadores y, por tanto, permite todos los tipos de movimiento a través del objeto Recordset.

  • Cursor estático: proporciona una copia estática de un conjunto de registros que puede usar para buscar datos o generar informes. Siempre permite marcadores y, por lo tanto, permite todos los tipos de movimiento a través del objeto Recordset. Las adiciones, cambios o eliminaciones de otros usuarios no son visibles. Este es el único tipo de cursor permitido al abrir un objeto Recordset del lado cliente.

  • Cursor de solo avance: le permite desplazarse solo hacia delante por el objeto Recordset. Las adiciones, cambios o eliminaciones de otros usuarios no son visibles. Esto mejora el rendimiento en situaciones en las que solo es necesario realizar un paso único a través de un objeto Recordset.

Establezca la propiedad CursorType antes de abrir el objeto Recordset para elegir el tipo de cursor, o pase un argumento CursorType con el método Open. Algunos proveedores no admiten todos los tipos de cursor. Compruebe la documentación del proveedor. Si no especifica un tipo de cursor, ADO abre de forma predeterminada un cursor de solo avance.

Si la propiedad CursorLocation está establecida en adUseClient para abrir un objeto Recordset, la propiedad UnderlyingValue de los objetos Field no está disponible en el objeto Recordset devuelto. Cuando se usa con algunos proveedores (como el proveedor ODBC de Microsoft para OLE DB junto con Microsoft SQL Server), puede crear objetos Recordset independientemente de un objeto Connection definido previamente si pasa una cadena de conexión con el método Open. ADO crea en todo caso un objeto Connection, pero no lo asigna a una variable de objeto. Sin embargo, si va a abrir varios objetos Recordset a través de la misma conexión, debe crear y abrir explícitamente un objeto Connection. Esto asigna el objeto Connection a una variable de objeto. Si no usa esta variable de objeto al abrir los objetos Recordset, ADO creará un nuevo objeto Connection para cada nuevo objeto Recordset, incluso si pasa la misma cadena de conexión.

Puede crear tantos objetos Recordset como sea necesario.

Al abrir un objeto Recordset, el registro actual se coloca en el primer registro (si existe), y las propiedades BOF y EOF se establecen en False. Si no hay registros, los valores de las propiedades BOF y EOF son True.

Puede usar los métodos MoveFirst, MoveLast, MoveNext y MovePrevious, el método Move, y las propiedades AbsolutePosition, AbsolutePage y Filter para cambiar la posición del registro actual, si el proveedor admite la funcionalidad pertinente. Los objetos Recordset de solo avance admiten únicamente el método MoveNext. Al usar los métodos Move para visitar cada registro (o enumerar el objeto Recordset), puede usar las propiedades BOF y EOF para determinar si usted se ha movido más allá del principio o del final del objeto Recordset.

Antes de usar cualquier funcionalidad de un objeto Recordset, debe llamar al método Supports en el objeto para comprobar que la funcionalidad es compatible o disponible. No debe usar esta funcionalidad cuando el método Supports devuelve False. Por ejemplo, puede usar el método MovePrevious solo si Recordset.Supports(adMovePrevious) devuelve True. De lo contrario, le aparecerá un error, ya que es posible que el objeto Recordset se haya cerrado y la funcionalidad no esté disponible en la instancia. Si no se admite una característica que a usted le interese, Supports también devolverá False. En este caso, debe evitar llamar a la propiedad o método correspondientes en el objeto Recordset.

Los objetos Recordset pueden admitir dos tipos de actualización: inmediata y por lotes. En la actualización inmediata, todos los cambios en los datos se escriben inmediatamente en el origen de datos subyacente una vez llame al método Update. También puede pasar matrices de valores como parámetros con los métodos AddNew y Update y actualizar simultáneamente varios campos de un registro.

Si un proveedor admite la actualización por lotes, puede hacer que la caché del proveedor cambie a más de un registro y, a continuación, transmitirlos en una sola llamada a la base de datos con el método UpdateBatch. Esto se aplica a los cambios realizados con los métodos AddNew, Update y Delete. Después de llamar al método UpdateBatch, puede usar la propiedad Status para comprobar si hay conflictos de datos con el fin de resolverlos.

Nota

Para ejecutar una consulta sin usar un objeto Command, pase una cadena de consulta al método Open de un objeto Recordset. Sin embargo, se requiere un objeto Command cuando desea conservar el texto del comando y volver a ejecutarlo, o bien usar parámetros de consulta.

La propiedad Mode rige los permisos de acceso.

La colección Fields es el miembro predeterminado del objeto Recordset. Como resultado, las dos instrucciones de código siguientes son equivalentes.

Debug.Print objRs.Fields.Item(0)  ' Both statements print   
Debug.Print objRs(0)              '  the Value of Item(0).  

Cuando se pasa un objeto Recordset entre procesos, solo se serializarán los valores rowset, y se omitirán las propiedades del objeto Recordset. Durante la deserialización, el valor rowset se desempaqueta en un objeto Recordset recién creado, que también establece sus propiedades a los valores predeterminados.

El objeto Recordset es seguro para el scripting.

Esta sección contiene los temas siguientes:

Consulte también

Objeto de conexión (ADO)
Fields (colección) (ADO)
Colección de propiedades (ADO)
Apéndice A: Proveedores