Standard Bookmarks

Three standard bookmark values are provided: DBBMK_INVALID, DBBMK_FIRST, and DBBMK_LAST. All single-byte (length 1) bookmark values of type DBTYPE_BYTES are reserved for standard bookmarks. Ordinary bookmarks of type DBTYPE_BYTES must be at least length 2. The following constant is defined in Oledb.h as the standard bookmark length:

#define STD_BOOKMARKLENGTH 1

The values of the standard bookmarks listed in the following table are guaranteed to be the same for all providers.

Value

Meaning

DBBMK_INVALID

DBBMK_INVALID can be used by applications to initialize and subsequently check bookmark validity.

DBBMK_FIRST

The first row of the rowset.

A consumer can fetch forward from this point. For example, if cRows is greater than zero and lRowsOffset is zero, IRowsetLocate::GetRowsAt returns the first cRows rows of the rowset.

A consumer cannot fetch backward before this point. For example, if cRows is -1 and lRowsOffset is zero, IRowsetLocate::GetRowsAt returns this row. If cRows is less than ?1, it returns DB_S_ENDOFROWSET.

DBBMK_LAST

The last row of the rowset. If the rowset is being populated asynchronously, this is the last row identified so far.

A consumer can fetch backward from this point. For example, if cRows is less than zero and lRowsOffset is zero, IRowsetLocate::GetRowsAt returns the last cRows rows of the rowset.

A consumer cannot fetch forward past this point. For example, if cRows is one and lRowsOffset is zero, IRowsetLocate::GetRowsAt returns this row. If cRows is greater than one, it returns DB_S_ENDOFROWSET.

The consumer can begin a sequential scan at either the first or last row.