Instantánea
Una instantánea es un conjunto de registros que refleja una vista estática de los datos tal como existían en el momento en que se creó la instantánea. Al abrir la instantánea y pasar a todos los registros, el conjunto de registros que contiene y sus valores no cambian hasta que vuelva a generar la instantánea llamando a Requery
.
Nota:
Este tema es aplicable a las clases ODBC de MFC. Si usa las clases DAO de MFC en lugar de las clases ODBC de MFC, consulte CDaoRecordset::Open para obtener una descripción de los conjuntos de registros de tipo instantánea.
Puede crear instantáneas actualizables o de solo lectura con las clases de base de datos. A diferencia de un conjunto de registros dinámicos, una instantánea actualizable no refleja los cambios en los valores de registro realizados por otros usuarios, pero sí refleja las actualizaciones y eliminaciones realizadas por el programa. Los registros agregados a una instantánea no se vuelven visibles para la instantánea hasta que se llama a Requery
.
Sugerencia
Una instantánea es un cursor estático de ODBC. Los cursores estáticos no obtienen realmente una fila de datos hasta que se desplaza hasta ese registro. Para asegurarse de que todos los registros se recuperan inmediatamente, puede desplazarse hasta el final del conjunto de registros y, a continuación, desplazarse hasta el primer registro que desea ver. Sin embargo, tenga en cuenta que el desplazamiento hacia el final conlleva una sobrecarga adicional y puede reducir el rendimiento.
Las instantáneas son más valiosas cuando necesita que los datos permanezcan fijos durante las operaciones, como cuando se genera un informe o se realizan cálculos. Incluso así, el origen de datos puede diferir considerablemente de la instantánea, por lo que es posible que quiera volver a generarlo de vez en cuando.
La compatibilidad con instantáneas se basa en la biblioteca de cursores ODBC, que proporciona cursores estáticos y actualizaciones posicionadas (necesarias para la capacidad de actualización) para cualquier controlador de nivel 1. El archivo DLL de la biblioteca de cursores debe cargarse en memoria para esta compatibilidad. Al construir un objeto CDatabase
y llamar a su función miembro OpenEx
, debe especificar la CDatabase::useCursorLib
opción del parámetro dwOptions. Si llama a la función miembro Open
, la biblioteca de cursores se carga de forma predeterminada. Si usa conjuntos de registros dinámicos en lugar de instantáneas, no desea que se cargue la biblioteca de cursores.
Las instantáneas solo están disponibles si la biblioteca de cursores ODBC se cargó cuando se construyó el objeto CDatabase
o el controlador ODBC que está usando admite cursores estáticos.
Nota:
En algunos controladores ODBC, es posible que las instantáneas (cursores estáticos) no se puedan actualizar. Compruebe la documentación del controlador para conocer los tipos de cursores admitidos y los tipos de simultaneidad que admiten. Para garantizar instantáneas actualizables, asegúrese de cargar la biblioteca de cursores en la memoria al crear un objeto CDatabase
. Para obtener más información, vea ODBC: Biblioteca de cursores ODBC.
Nota:
Si quiere usar instantáneas y conjuntos de registros dinámicos, debe basarlas en dos objetos CDatabase
diferentes (dos conexiones diferentes).
Para obtener más información sobre el recurso compartido de instantáneas de propiedades con todos los conjuntos de registros, vea Conjunto de registros (ODBC). Para obtener más información sobre ODBC e instantáneas, incluida la biblioteca de cursores ODBC, vea ODBC.