Delen via


Relatieve en absolute scrolling

De meeste schuifopties in SQLFetchScroll plaatsen de cursor ten opzichte van de huidige positie of op een absolute positie. SQLFetchScroll biedt ondersteuning voor het ophalen van de volgende, voorafgaande, eerste en laatste rijensets, evenals het relatieve ophalen (haal de rijenset n rijen op vanaf het begin van de huidige rijenset) en absoluut ophalen (haal de rijenset op die begint bij rij n). Als n negatief is in een absolute ophalen, worden rijen geteld vanaf het einde van het resultaatset. Een absolute ophalen van rij -1 betekent dus het ophalen van de set van rijen die begint met de laatste rij in de resultaatset.

Dynamische cursors detecteren rijen die zijn ingevoegd in en verwijderd uit de resultatenset, dus er is geen eenvoudige manier voor dynamische cursors om de rij op een bepaald getal op te halen dan lezen vanaf het begin van de resultatenset, wat waarschijnlijk traag is. Bovendien is absoluut ophalen niet erg nuttig in dynamische cursors omdat rijnummers veranderen wanneer rijen worden ingevoegd en verwijderd; Daarom kan het ophalen van hetzelfde rijnummer verschillende rijen opleveren.

Toepassingen die sqlFetchScroll alleen gebruiken voor de mogelijkheden van de blokcursor, zoals rapporten, passeren waarschijnlijk de resultatenset één keer, waarbij alleen de optie wordt gebruikt om de volgende rijenset op te halen. Op scherm gebaseerde toepassingen kunnen daarentegen profiteren van alle mogelijkheden van SQLFetchScroll. Als de toepassing de grootte van de rijenset instelt op het aantal rijen dat op het scherm wordt weergegeven en de schermbuffers koppelt aan de resultatenset, kan de schuifbalkbewerkingen rechtstreeks worden omgezet naar aanroepen naar SQLFetchScroll.

Scrollbalk bediening Optie voor schuiven in SQLFetchScroll
Pagina omhoog SQL_FETCH_PRIOR
Pagina omlaag SQL_FETCH_NEXT
Uitlijnen SQL_FETCH_RELATIVE met FetchOffset gelijk aan -1
Lijn omlaag SQL_FETCH_RELATIVE met FetchOffset gelijk aan 1
Scrollvak bovenaan SQL_FETCH_FIRST
Scrollbalk onderaan SQL_FETCH_LAST
Positie van willekeurig schuifvak SQL_FETCH_ABSOLUTE

Dergelijke toepassingen moeten ook het schuifvak plaatsen na een schuifbewerking, waarvoor het huidige rijnummer en het aantal rijen vereist zijn. Voor het huidige rijnummer kunnen toepassingen het huidige rijnummer bijhouden of SQLGetStmtAttr aanroepen met het kenmerk SQL_ATTR_ROW_NUMBER om het op te halen.

Het aantal rijen in de cursor, de grootte van de resultatenset, is beschikbaar als het SQL_DIAG_CURSOR_ROW_COUNT veld van de diagnostische koptekst. De waarde in dit veld wordt alleen gedefinieerd nadat SQLExecute, SQLExecDirect of SQLMoreResult is aangeroepen. Dit aantal kan een schatting of een exact aantal zijn, afhankelijk van de mogelijkheden van de driver. De ondersteuning van het stuurprogramma kan worden bepaald door SQLGetInfo aan te roepen met de informatietypen van de cursorkenmerken en te controleren of de SQL_CA2_CRC_APPROXIMATE of SQL_CA2_CRC_EXACT bit wordt geretourneerd voor het type cursor.

Een exact aantal rijen wordt nooit ondersteund voor een dynamische cursor. Voor andere typen cursors kan het stuurprogramma het exacte of geschatte aantal rijen ondersteunen, maar niet beide. Als het stuurprogramma geen exacte of geschatte rijaantallen voor een specifiek cursortype ondersteunt, bevat het SQL_DIAG_CURSOR_ROW_COUNT veld het aantal rijen dat tot nu toe is opgehaald. Ongeacht wat het stuurprogramma ondersteunt, zorgt SQLFetchScroll met een bewerking van SQL_FETCH_LAST ervoor dat het SQL_DIAG_CURSOR_ROW_COUNT veld het exacte aantal rijen bevat.