Condividi tramite


Scorrimento relativo e assoluto

La maggior parte delle opzioni di scorrimento in SQLFetchScroll posiziona il cursore rispetto alla posizione corrente o a una posizione assoluta. SQLFetchScroll supporta il recupero dei set di righe successivi, precedenti, primi e ultimi, nonché il recupero relativo (recuperare il set di righe n righe dall'inizio del set di righe corrente) e il recupero assoluto (recuperare il set di righe a partire dalla riga n). Se n è negativo in un'operazione di recupero assoluto, le righe vengono conteggiate dalla fine del set di risultati. Pertanto, un recupero assoluto della riga -1 significa recuperare il set di righe che inizia con l'ultima riga nel set di risultati.

I cursori dinamici rilevano le righe inserite ed eliminate dal set di risultati, quindi non è possibile recuperare facilmente le righe in un determinato numero diverso dalla lettura dall'inizio del set di risultati, che probabilmente è lento. Inoltre, il recupero assoluto non è molto utile nei cursori dinamici perché i numeri di riga cambiano man mano che le righe vengono inserite ed eliminate; pertanto, il recupero successivo dello stesso numero di riga può produrre righe diverse.

È probabile che le applicazioni che usano SQLFetchScroll solo per le relative funzionalità di cursore a blocchi, ad esempio i report, passino attraverso il set di risultati una sola volta, usando solo l'opzione per recuperare il set di righe successivo. Le applicazioni basate sullo schermo, d'altra parte, possono sfruttare tutte le funzionalità di SQLFetchScroll. Se l'applicazione imposta le dimensioni del set di righe sul numero di righe visualizzate sullo schermo e associa i buffer dello schermo al set di risultati, è possibile convertire le operazioni della barra di scorrimento direttamente nelle chiamate a SQLFetchScroll.

Operazione barra di scorrimento Opzione di scorrimento SQLFetchScroll
Pagina su SQL_FETCH_PRIOR
Scorri una pagina verso il basso SQL_FETCH_NEXT
Allineamento SQL_FETCH_RELATIVE con FetchOffset uguale a -1
Linea verso il basso SQL_FETCH_RELATIVE con FetchOffset uguale a 1
Casella di scorrimento in alto SQL_FETCH_FIRST
Casella di scorrimento in basso SQL_FETCH_LAST
La posizione della casella di scorrimento casuale SQL_FETCH_ABSOLUTE

Tali applicazioni devono anche posizionare la casella di scorrimento dopo un'operazione di scorrimento, che richiede il numero di riga corrente e il numero di righe. Per il numero di riga corrente, le applicazioni possono tenere traccia del numero di riga corrente o chiamare SQLGetStmtAttr con l'attributo SQL_ATTR_ROW_NUMBER per recuperarlo.

Il numero di righe nel cursore, ovvero la dimensione del set di risultati, è disponibile come campo SQL_DIAG_CURSOR_ROW_COUNT dell'intestazione di diagnostica. Il valore in questo campo viene definito solo dopo la chiamata di SQLExecute, SQLExecDirect o SQLMoreResult . Questo conteggio può essere un conteggio approssimativo o un conteggio esatto, a seconda delle funzionalità del driver. Il supporto del driver può essere determinato chiamando SQLGetInfo con i tipi di informazioni sugli attributi del cursore e verificando se il bit SQL_CA2_CRC_APPROXIMATE o SQL_CA2_CRC_EXACT viene restituito per il tipo di cursore.

Un numero esatto di righe non è mai supportato per un cursore dinamico. Per altri tipi di cursori, il driver può supportare conteggi di righe esatti o approssimativi, ma non entrambi. Se il driver non supporta conteggi di righe esatti né approssimativi per un tipo di cursore specifico, il campo SQL_DIAG_CURSOR_ROW_COUNT contiene il numero di righe recuperate finora. Indipendentemente dal supporto del driver, SQLFetchScroll con un'operazione di SQL_FETCH_LAST causerà che il campo SQL_DIAG_CURSOR_ROW_COUNT contenga il conteggio esatto delle righe.