Compartir por


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.

Consulte también

Usar descriptores de acceso