¿Cómo utilizar marcadores?

Antes de abrir el conjunto de filas, debe indicar al proveedor que desee utilizar marcadores. Para ello, establezca la propiedad DBPROP_BOOKMARKS en true en el conjunto de propiedades. El proveedor recupera los marcadores como columna cero, por lo que debe utilizar la macro especial BOOKMARK_ENTRY y la clase CBookmark si utilizas un descriptor de acceso estático. CBookmark es una clase basada en plantilla donde el argumento es la longitud en bytes del búfer de marcador. La longitud del búfer para un marcador depende del proveedor. Si utiliza el proveedor OLE DB de ODBC, tal como se muestra en el ejemplo siguiente, el buffer debe ser 4 bytes.

clase CProduct
{
público:
   CBookmarklt; 4 > marcador;

BEGIN_COLUMN_MAP(CProduct)
      BOOKMARK_ENTRY(Bookmark)
   END_COLUMN_MAP()
};

CDBPropSet propset(DBPROPSET_ROWSET);
propset.AddProperty (DBPROP_BOOKMARKS, true);

CTable < CAccessor <CProduct> > producto;
producto.Abierto (período de sesiones, "Productos" & propset)

Si utiliza CDynamicAccessor, el búfer se asigna dinámicamente en tiempo de ejecución. En este caso, puede utilizar una versión especializada de CBookmark para que no se especifica una longitud del búfer. Utilice la función GetBookmark para recuperar el marcador desde el registro actual, como se muestra aquí:

CTablelt;CDynamicAccessor > producto;
CBookmark < > marcador;
CDBPropSet propset(DBPROPSET_ROWSET);

propset.AddProperty (DBPROP_BOOKMARKS, true);
producto.Abierto (período de sesiones, "Productos" & propset);
producto.MoveNext();
producto.GetBookmark(&bookmark);

Index