3.1.4.3 Advancing the Table

When querying the table, the client can advance the table by setting the QueryRowsFlags field to 0x00 in the RopQueryRows ROP request ([MS-OXCROPS] section 2.2.5.4). Additionally, when higher layers need to move the current cursor in the table, the client MUST use a RopFindRow ([MS-OXCROPS] section 2.2.5.13), RopSeekRow ([MS-OXCROPS] section 2.2.5.8), RopSeekRowBookmark ([MS-OXCROPS] section 2.2.5.9), or RopSeekRowFractional<18> ([MS-OXCROPS] section 2.2.5.10) ROP request to advance to the correct row. A RopFindRow ROP request can be used to both advance the table and query for the row found at the same time.

The client MUST NOT expect a RopSeekRowFractional ROP request to place the cursor in any exact position. It is always an approximation.

When a higher layer, or the user, needs to determine the current location in a table, the client MUST send a RopQueryPosition ROP request ([MS-OXCROPS] section 2.2.5.7).

When a higher layer, or the user, needs to save the current location in the table for future use, the client MUST send a RopCreateBookmark ROP request ([MS-OXCROPS] section 2.2.5.11) and cache the data from the  Bookmark field.

When a higher layer, or the user, no longer needs a bookmark that was created using a RopCreateBookmark ROP, the client SHOULD send a RopFreeBookmark ROP request ([MS-OXCROPS] section 2.2.5.14) with the data from the Bookmark field. The client can choose not to send a RopFreeBookmark ROP request; however, this can degrade server performance until the table is released via the RopRelease ROP ([MS-OXCROPS] section 2.2.15.3).

When a higher layer, or the user, needs to move the current table location to a previously created bookmark, the client MUST send a RopSeekRowBookmark ROP request.