Megosztás:


Relatív és abszolút görgetés

Az SQLFetchScroll legtöbb görgetési lehetősége az aktuális pozícióhoz vagy abszolút pozícióhoz viszonyítva helyezi a kurzort. Az SQLFetchScroll támogatja a következő, az előző, az első és az utolsó sorok beolvasását, valamint a relatív beolvasást (az n sorhalmaz sorkészletét az aktuális sorkészlet kezdetétől) és az abszolút beolvasást (az n sorkészlettől kezdve). Ha n negatív az abszolút beolvasásban, a sorok az eredményhalmaz végétől lesznek megszámolva. Így egy sor -1 abszolút módú lekérése azt jelenti, hogy az eredményhalmaz utolsó sorával kezdődő sorhalmazt lekéri.

A dinamikus kurzorok észlelik az eredményhalmazba beszúrt és törölt sorokat, így a dinamikus kurzoroknak nem könnyű beolvasni a sort az eredményhalmaz kezdetétől számított olvasáson kívül egy adott számra, ami valószínűleg lassú lesz. Továbbá az abszolút beolvasás nem túl hasznos a dinamikus kurzorok esetén, mert a sorok beszúrása és törlése során a sorszámok változnak; ezért az azonos sorszám egymást követő lekérése különböző sorokat eredményezhet.

Az SQLFetchScrollt csak a blokkkurzor képességeihez( például jelentésekhez) használó alkalmazások valószínűleg egyetlen alkalommal haladnak át az eredményhalmazon, és csak a következő sorhalmaz beolvasására szolgáló lehetőséget használják. A képernyőalapú alkalmazások viszont kihasználhatják az SQLFetchScroll összes funkcióját. Ha az alkalmazás a sorok méretét a képernyőn megjelenő sorok számára állítja, és a képernyőpuffereket az eredményhalmazhoz köti, a görgetősáv műveleteit közvetlenül lefordíthatja az SQLFetchScroll felé irányuló hívásokra.

Görgetősáv művelete SQLFetchScroll görgetési lehetőség
Lapozz felfelé SQL_FETCH_PRIOR
Oldal lefelé SQL_FETCH_NEXT
Sor felfelé SQL_FETCH_RELATIVE esetén, ha FetchOffset -1 értékű
Vonal megszakadt SQL_FETCH_RELATIVE FetchOffset értéke 1
Görgetőmező felül SQL_FETCH_FIRST
Görgetőmező alul SQL_FETCH_LAST
Véletlenszerű görgetőmező pozíciója SQL_FETCH_ABSOLUTE

Az ilyen alkalmazásoknak görgetési művelet után is el kell helyeznie a görgetődobozt, amelyhez az aktuális sorszám és a sorok száma szükséges. Az aktuális sorszám esetében az alkalmazások nyomon követhetik az aktuális sorszámot, vagy meghívhatják az SQLGetStmtAttr-t a SQL_ATTR_ROW_NUMBER attribútummal a lekéréshez.

A kurzorban lévő sorok száma, amely az eredményhalmaz mérete, a diagnosztikai fejléc SQL_DIAG_CURSOR_ROW_COUNT mezőjeként érhető el. A mező értéke csak az SQLExecute, az SQLExecDirect vagy az SQLMoreResult meghívása után lesz definiálva. Ez a szám lehet hozzávetőleges vagy pontos szám az illesztőprogram képességeitől függően. Az illesztőprogram támogatása úgy határozható meg, hogy meghívja az SQLGetInfo-t a kurzorattribútumok információtípusaival, és ellenőrzi, hogy a kurzortípushoz visszaadja-e a SQL_CA2_CRC_APPROXIMATE vagy SQL_CA2_CRC_EXACT bitet.

A dinamikus kurzor pontos sorszámát soha nem támogatja a program. Más típusú kurzorok esetében az illesztő támogatja a pontos vagy hozzávetőleges sorszámokat, de mindkettőt nem. Ha az illesztő nem támogatja egy adott kurzortípus pontos és közelítő sorszámát, a SQL_DIAG_CURSOR_ROW_COUNT mező az eddig beolvasott sorok számát tartalmazza. Függetlenül attól, hogy az illesztőprogram mit támogat, az SQLFetchScroll egy SQL_FETCH_LAST művelettel a SQL_DIAG_CURSOR_ROW_COUNT mező pontos sorszámát fogja tartalmazni.