Utilizar marcadores
Antes de abrir el conjunto de filas, debe indicar al proveedor que desea usar marcadores. Para ello, establezca la propiedad DBPROP_BOOKMARKS
en true
en el conjunto de propiedades. El proveedor recupera marcadores como columna cero, por lo que si se usa un descriptor de acceso estático, se debe usar la macro especial BOOKMARK_ENTRY y la clase CBookmark
. CBookmark
es una clase de plantilla donde el argumento es la longitud en bytes del búfer del marcador. La longitud del búfer necesario para un marcador depende del proveedor. Si usa el proveedor OLE DB ODBC, como se muestra en el ejemplo siguiente, el búfer debe ser de 4 bytes.
class CProducts
{
public:
CBookmark<4> bookmark;
BEGIN_COLUMN_MAP(CProducts)
BOOKMARK_ENTRY(bookmark)
END_COLUMN_MAP()
};
Luego, lo usa el código siguiente:
CDBPropSet propset(DBPROPSET_ROWSET);
propset.AddProperty(DBPROP_BOOKMARKS, true);
CTable<CAccessor<CProducts>> product;
CSession session;
product.Open(session, "Products", &propset);
Si usa CDynamicAccessor
, el búfer se establece dinámicamente en tiempo de ejecución. En este caso, puede usar una versión especializada de CBookmark
para la que no se especifica ninguna longitud de búfer. Use la función GetBookmark
para recuperar el marcador del registro actual, como se muestra en este ejemplo de código:
CTable<CDynamicAccessor> product;
CBookmark<> bookmark;
CDBPropSet propset(DBPROPSET_ROWSET);
CSession session;
propset.AddProperty(DBPROP_BOOKMARKS, true);
product.Open(session, "Products", &propset);
product.MoveNext();
product.GetBookmark(&bookmark);
Para obtener información sobre cómo admitir marcadores en proveedores, consulte Compatibilidad con proveedores para marcadores.