Compartir a través de


Objeto Recordset (ADO)

Representa todo el conjunto de registros 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.

Observaciones

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). Dependiendo de la funcionalidad admitida por el proveedor, es posible que algunos métodos o propiedades de 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 obsoleto. Recordset ProgID seguirá funcionando sin volver a compilar, pero el nuevo desarrollo debe hacer referencia a ADODB. Conjunto de registros.

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; y permite marcadores si el proveedor los admite.

  • Cursor de conjunto de claves Se comporta como un cursor dinámico, salvo que impide ver los registros que agregan otros usuarios y evita el acceso a los registros que eliminan otros usuarios. Los cambios de datos de otros usuarios seguirán siendo visibles. Siempre admite marcadores y, por tanto, permite todo tipo 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 tanto, permite todos los tipos de movimiento a través del objeto Recordset. Las adiciones, cambios o eliminaciones de otros usuarios no serán visibles. Este es el único tipo de cursor permitido al abrir un objeto Recordset del lado cliente.

  • Cursor de solo avance Permite desplazarse hacia delante solo a través del objeto Recordset. Las adiciones, cambios o eliminaciones de otros usuarios no serán visibles. Esto mejora el rendimiento en situaciones en las que es necesario realizar un solo paso a través de un objeto Recordset.

Establezca la propiedad CursorType antes de abrir el objeto Recordset para elegir el tipo de cursor o pasar 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 un cursor de solo avance de forma predeterminada.

Si la propiedad CursorLocation se establece 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 pasando una cadena de conexión con el método Open . ADO todavía crea un objeto Connection , pero no asigna ese objeto 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 crea un nuevo objeto Connection para cada nuevo objeto Recordset, aunque pase 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 la propiedad 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, suponiendo que el proveedor admita la funcionalidad pertinente. Los objetos Recordset de solo avance solo admiten 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 se ha movido más allá del principio o el 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 la 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, recibirá un error, ya que es posible que el objeto Recordset se haya cerrado y que la funcionalidad no esté disponible en la instancia. Si no se admite una característica que le interese, Supports también devolverá false. En este caso, debe evitar llamar a la propiedad o método correspondiente en el objeto Recordset .

Los objetos Recordset pueden admitir dos tipos de actualización: inmediatos 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 que se llama 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 en 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 para 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 necesita un objeto Command cuando desee conservar el texto del comando y volver a ejecutarlo, o bien use 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 a través de procesos, solo se serializarán los valores del conjunto de filas y se omitirán las propiedades del objeto Recordset . Durante la desaprovisionamiento, el conjunto de filas se desempaqueta en un objeto Recordset recién creado, que también establece sus propiedades en los valores predeterminados.

El objeto Recordset es seguro para el scripting.

Esta sección contiene el tema siguiente.

Véase también

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