This documentation is archived and is not being maintained.


Moves the cursor to a row within the current rowset.

void SetRowsetCursorPosition(
   WORD wRow,
      WORD wLockType = SQL_LOCK_NO_CHANGE 



The one-based position of a row in the current rowset. This value can range from 1 to the size of the rowset.


Value indicating how to lock the row after it has been refreshed. For details, see Remarks.

When implementing bulk row fetching, records are retrieved by rowsets, where the first record in the fetched rowset is the current record. In order to make another record within the rowset the current record, call SetRowsetCursorPosition. For example, you can combine SetRowsetCursorPosition with the GetFieldValue member function to dynamically retrieve the data from any record of your recordset.

To use SetRowsetCursorPosition, you must have implemented bulk row fetching by specifying the CRecordset::useMultiRowFetch option of the dwOptions parameter in the Open member function.

SetRowsetCursorPosition calls the ODBC API function SQLSetPos. The wLockType parameter specifies the lock state of the row after SQLSetPos has executed. The following table describes the possible values for wLockType.

wLockType Description

SQL_LOCK_NO_CHANGE (the default value)

The driver or data source ensures that the row is in the same locked or unlocked state as it was before SetRowsetCursorPosition was called.


The driver or data source locks the row exclusively. Not all data sources support this type of lock.


The driver or data source unlocks the row. Not all data sources support this type of lock.

For more information about SQLSetPos, see the Platform SDK. For more information about bulk row fetching, see the article Recordset: Fetching Records in Bulk (ODBC).