Processing RopFindRow

The RopFindRow ROP ([MS-OXCROPS] section sets the cursor position to the first row that matches the search criteria specified in the ROP (starting the search from the current cursor position) and returns the found row when there is enough space in the output buffer. Rows that do not match the search criteria MUST remain unchanged in the table, but the cursor position is updated to match the found row. If no rows match the search criteria, the cursor position for the RopFindRow ROP is undefined.

If the client requested that the find be performed from a custom bookmark, as specified in section, but the bookmark has become invalid because of a RopSortTable ([MS-OXCROPS] section, RopRestrict ([MS-OXCROPS] section, or RopResetTable ([MS-OXCROPS] section ROP request, then the server SHOULD<32> set the ReturnValue field to "ecInvalidBookmark". If the bookmark points to a row that is no longer visible (for example, the row has been deleted, or its properties have changed so that it no longer matches the restriction, or its header row has been collapsed), the server MUST set the RowNoLongerVisible field to "TRUE" (0x01), and perform the find from the next row in the table.

A RopSetColumns ROP request ([MS-OXCROPS] section MUST be sent on the table before sending a RopFindRow ROP request. The columns sent for the row found MUST be the columns that are specified on the RopSetColumns ROP.

The server MUST complete all asynchronous table ROPs before executing this ROP or fail the ROP with "ecBusy",<33> as specified in section

The RopFindRow ROP MUST be supported on contents tables, hierarchy tables, and rules tables.

The following specific error code applies to this ROP. For more details about ROP errors returned, see [MS-OXCDATA] section 2.4.

Error code name






The object on which this ROP was sent is not a contents table, hierarchy table, or rules table.