Para utilizar un descriptor de acceso estático, el consumidor debe tener un registro de usuario. El registro de usuario es una clase de C++ que contiene elementos de datos para control de entrada o salida. El Asistente para objetos ATL genera un registro de usuario para el consumidor. Puede agregar métodos para el registro de usuario para tareas opcionales como manejo de comandos.
El código siguiente muestra un registro de muestra que se encarga de comandos. En el registro de usuario, BEGIN_OLUMN_MAP representa un conjunto de filas de datos pasado al consumidor de un proveedor. BEGIN_PARAM_MAP representa un conjunto de parámetros de comando. Este ejemplo utiliza una clase de CCommand para controlar los parámetros de comando. Los miembros de datos en las entradas de mapa representan desplazamientos en un bloque contiguo de memoria para cada instancia de la clase. Las macros COLUMN_ENTRY corresponden a las macros PROVIDER_COLUMN_ENTRY en el lado del proveedor.
Para obtener más información sobre las macros COLUMN_MAP y PARAM_MAP , vea Macros para plantillas de consumidor OLE DB.
clase CArtists
{
público:
/ / Elementos de datos
CHAR m_szFirstName [20];
CHAR m_szLastName [30];
m_nAge corto;
/ / Mapa de enlace de salida
BEGIN_COLUMN_MAP(CArtists)
COLUMN_ENTRY (1, m_szFirstName)
COLUMN_ENTRY (2, m_szLastName)
COLUMN_ENTRY (3, m_nAge)
END_COLUMN_MAP()
/ / parámetro vinculante mapa
BEGIN_PARAM_MAP(CArtists)
COLUMN_ENTRY (1, m_nAge)
END_PARAM_MAP
}
En el ejemplo siguiente se muestra el registro de usuario modificado para soportar múltiples descriptores de acceso en el conjunto de filas. En lugar de BEGIN_COLUMN_MAP y END_COLUMN_MAP, usa BEGIN_ACCESSOR_MAP y BEGIN_ACCESSOR para cada descriptor de acceso. La macro BEGIN_ACCESSOR especifica el número de descriptor de acceso (desplazamiento de cero) y si el descriptor de acceso es un autoaccessor. Autoaccessors llame al método GetData para recuperar los datos automáticamente en una llamada a MoveNext. Los descriptores de acceso no automáticos requieren explícitamente recuperar los datos. Usar un descriptor de acceso no automático si va a enlazar a un campo de datos de gran tamaño (como una imagen de mapa de bits) que puede que no desee recuperar para cada registro.
clase CMultiArtists
{
público:
/ / Elementos de datos
CHAR m_szFirstName [20];
CHAR m_szLastName [30];
m_nAge corto;
/ / Mapa de enlace de salida
BEGIN_ACCESSOR_MAP (CMultiArtists, 2)
BEGIN_ACCESSOR (0, verdadero)
COLUMN_ENTRY (1, m_szFirstName)
COLUMN_ENTRY (2, m_szLastName)
END_ACCESSOR()
BEGIN_ACCESSOR (1, false) / / no un descriptor de acceso automático
COLUMN_ENTRY (3, m_nAge)
END_ACCESSOR()
END_ACCESSOR_MAP()
}