Quando si utilizza CDynamicAccessor, il metodo aperto di comando crea una funzione di accesso per voi automaticamente, sulla base delle informazioni di colonna del set di righe aperto. È possibile ignorare la funzione di accesso dinamica per controllare esattamente come le colonne sono vincolate.
Per eseguire l'override della funzione di accesso dinamica, passare false come ultimo parametro al metodo CCommand:: Open . Questo impedisce aperto dalla creazione di una funzione di accesso automaticamente. È quindi possibile chiamare GetColumnInfo e AddBindEntry per ogni colonna che si desidera associare . Il codice seguente mostra come farlo
USES_CONVERSION;
doppia dblProductID;
CCommandlt;CDynamicAccessor > prodotto;
/ / Aperto il tavolo, il passaggio di false per impedire che il prodotto associazione automatica.Aperto (sessione, t ("Select * da prodotti"), NULL, false NULL, DBGUID_DEFAULT,);
ULONG nColumns;
DBCOLUMNINFO * pColumnInfo;
/ / Ottiene le informazioni di colonna dal set di righe aperto
prodotto.GetColumnInfo (nColumns &, pColumnInfo);
/ / Bind l'ID del prodotto come doppio
.wType pColumnInfo [0] = DBTYPE_R8;
.ulColumnSize pColumnInfo [0] = 8;
prodotto.AddBindEntry(pColumnInfo[0]);
/ / Associare il nome del prodotto, in quanto è
prodotto.AddBindEntry(pColumnInfo[1]);
/ / Il livello di riordino come stringa di bind
pColumnInfo [8] .wtype = DBTYPE_STR;
pColumnInfo [8] .ulcolumnsize = 10;
prodotto.AddBindEntry(pColumnInfo[8]);
/ / Noi abbiamo finito specificando le associazioni. Vai avanti e si legano
prodotto.Bind ();
/ / Liberare la memoria per le informazioni di colonna che abbiamo estratto in / / precedente chiamata a GetColumnInfo
CoTaskMemFree(pColumnInfo);
char * pszProductName;
char * pszReorderLevel;
bool bRC;
/ / Loop through i record di rintracciare le informazioni.
mentre (prodotto.MoveNext () = = S_OK)
{
bRC = prodotto.GetValue (1 & dblProductID);
pszProductName = (char *) prodotto.GetValue(2);
pszReorderLevel = (char *) prodotto.GetValue(9);
ATLTRACE ( t ("Override = % lf \"%s\ "\"%s\"\n"), dblProductID,
A2T(pszProductName), A2T(pszReorderLevel));
}