¿Cómo anular un descriptor de acceso dinámico?

Cuando se utiliza CDynamicAccessor, el método abierto de comando crea un descriptor de acceso para usted automáticamente, basándose en la información de la columna del conjunto de filas abiertas. Se puede reemplazar el descriptor de acceso dinámico para controlar exactamente cómo se enlazan las columnas.

Para reemplazar el descriptor de acceso dinámico, pase falso como último parámetro al método CCommand::Open . Esto impide Abrir crear un descriptor de acceso automáticamente. A continuación, puede llamar GetColumnInfo y llame a AddBindEntry para cada columna que desee enlazar. El código siguiente muestra cómo hacerlo

USES_CONVERSION;
doble dblProductID;

CCommandlt;CDynamicAccessor > producto;
/ / Abrir la tabla, pasando false para evitar que el producto de enlace automático.Abierto (período de sesiones, _T ("Select * de productos"), NULL, falso NULL, DBGUID_DEFAULT,);

ULONG nColumns;
DBCOLUMNINFO * pColumnInfo;
/ / Obtener la información de columna en el conjunto de filas abierta
producto.GetColumnInfo (nColumns & pColumnInfo);

/ / Enlazar el ID del producto como una doble
pColumnInfo [0] .wtype = DBTYPE_R8;
.ulColumnSize pColumnInfo [0] = 8;
producto.AddBindEntry(pColumnInfo[0]);

/ / Enlazar el nombre del producto como lo es
producto.AddBindEntry(pColumnInfo[1]);

/ / Enlazar el nivel de nuevo pedido como una cadena
pColumnInfo [8] .wtype = DBTYPE_STR;
pColumnInfo [8] .ulcolumnsize = 10;
producto.AddBindEntry(pColumnInfo[8]);

/ / Hemos terminado de especificar los enlaces. Anímate y enlazar
producto.BIND();
/ / Liberar la memoria para la información de la columna que hemos obtenidos en / / anterior llamar a GetColumnInfo
CoTaskMemFree(pColumnInfo);

Char * pszProductName;
Char * pszReorderLevel;
bool bRC;

/ / Bucle a través de los registros de seguimiento de la información.
mientras (producto.MoveNext() == S_OK)
{
   bRC = producto.GetValue (1 & dblProductID);
   pszProductName = (char **) producto.GetValue(2);
   pszReorderLevel = (char **) producto.GetValue(9);

ATLTRACE (_T ("Override = % lf \"%s\ "\"%s\"\n"), dblProductID,
      A2T(pszProductName), A2T(pszReorderLevel));
}

Index