Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
La mayoría de las opciones de desplazamiento en SQLFetchScroll colocan el cursor en relación con la posición actual o con una posición absoluta. SQLFetchScroll admite la captura de los conjuntos de filas siguiente, anterior, primero y último, así como la captura relativa (capturar el conjunto de filas n filas desde el principio del conjunto de filas actual) y la captura absoluta (capturar el conjunto de filas a partir de la fila n). Si n es negativo en una captura absoluta, las filas se cuentan desde el final del conjunto de resultados. Por lo tanto, una captura absoluta de la fila -1 significa capturar el conjunto de filas que comienza con la última fila del conjunto de resultados.
Los cursores dinámicos detectan filas insertadas y eliminadas del conjunto de resultados, por lo que no hay ninguna manera fácil de que los cursores dinámicos recuperen la fila en un número determinado que no sea leer desde el principio del conjunto de resultados, lo que es probable que sea lento. Además, la captura absoluta no es muy útil en cursores dinámicos porque los números de fila cambian a medida que se insertan y eliminan filas; por lo tanto, la captura sucesiva del mismo número de fila puede producir filas diferentes.
Es probable que las aplicaciones que usen SQLFetchScroll solo para sus funcionalidades de cursor de bloque, como los informes, pasen por el conjunto de resultados una sola vez, usando solo la opción para capturar el siguiente conjunto de filas. Por otro lado, las aplicaciones basadas en pantalla pueden aprovechar todas las funcionalidades de SQLFetchScroll. Si la aplicación establece el tamaño del conjunto de filas en el número de filas que se muestran en la pantalla y enlaza los búferes de pantalla al conjunto de resultados, puede traducir las operaciones de barra de desplazamiento directamente a llamadas a SQLFetchScroll.
| Operación de barra de desplazamiento | Opción de desplazamiento de SQLFetchScroll |
|---|---|
| Re Pág | SQL_FETCH_PRIOR |
| Página abajo | SQL_FETCH_NEXT |
| Alinear | SQL_FETCH_RELATIVE con FetchOffset igual a -1 |
| Línea abajo | SQL_FETCH_RELATIVE con FetchOffset igual a 1 |
| Cuadro de desplazamiento en la parte superior | SQL_FETCH_FIRST |
| Cuadro de desplazamiento en la parte inferior | SQL_FETCH_LAST |
| Posición aleatoria del cuadro de desplazamiento | SQL_FETCH_ABSOLUTE |
Estas aplicaciones también deben colocar la barra de desplazamiento después de una operación de desplazamiento, lo que requiere el número de fila actual y el número de filas. Para el número de fila actual, las aplicaciones pueden realizar un seguimiento del número de fila actual o llamar a SQLGetStmtAttr con el atributo SQL_ATTR_ROW_NUMBER para recuperarlo.
El número de filas del cursor, que es el tamaño del conjunto de resultados, está disponible como el campo SQL_DIAG_CURSOR_ROW_COUNT del encabezado de diagnóstico. El valor de este campo se define solo después de llamar a SQLExecute, SQLExecDirect o SQLMoreResult . Este recuento puede ser un recuento aproximado o un recuento exacto, en función de las funcionalidades del controlador. La compatibilidad del controlador se puede determinar llamando a SQLGetInfo con los tipos de información de atributos de cursor y comprobando si se devuelve el bit SQL_CA2_CRC_APPROXIMATE o SQL_CA2_CRC_EXACT para el tipo de cursor.
Nunca se admite un recuento exacto de filas para un cursor dinámico. Para otros tipos de cursores, el controlador puede admitir recuentos exactos o aproximados de filas, pero no ambos. Si el controlador no admite recuentos exactos ni aproximados de filas para un tipo de cursor específico, el campo SQL_DIAG_CURSOR_ROW_COUNT contiene el número de filas que se han capturado hasta ahora. Independientemente de lo que admita el controlador, SQLFetchScroll con una operación de SQL_FETCH_LAST hará que el campo SQL_DIAG_CURSOR_ROW_COUNT contenga el recuento exacto de filas.