Jak zastąpić dynamiczne akcesor?

Podczas korzystania z CDynamicAccessor, otwartej metody polecenia akcesor operacji można automatycznie tworzy, na podstawie informacji o kolumnie otwartych wierszy. Można zastąpić dynamiczne akcesor kontroli, dokładnie tak jak kolumny są powiązane.

Aby zastąpić dynamiczne akcesor, przekazać fałszywe jako ostatni parametr metody CCommand::Open . Zapobiega to otwarte od tworzenia akcesor automatycznie. Można następnie wywołać GetColumnInfo i wywołać AddBindEntry dla każdej kolumny, które chcesz powiązać. Poniższy kod pokazuje jak to zrobić

USES_CONVERSION;
podwójne dblProductID;

CCommandlt;CDynamicAccessor > produktu;
/ / Otwórz tabelę, przekazując wartość false, aby uniemożliwić automatyczne powiązanie produktu.Otwarte (sesji, _T ("Select * od produktów"), NULL, NULL, DBGUID_DEFAULT, FAŁSZ);

ULONG nColumns;
DBCOLUMNINFO * pColumnInfo;
/ / Get informacji o kolumnie z otwartych wierszy
produkt.GetColumnInfo (nColumns & pColumnInfo);

/ / Bind identyfikator produktu jako podwójna
.wType pColumnInfo [0] = DBTYPE_R8;
.ulColumnSize pColumnInfo [0] = 8;
produkt.AddBindEntry(pColumnInfo[0]);

/ / Powiązać nazwę produktu, jak
produkt.AddBindEntry(pColumnInfo[1]);

/ / Bind poziomu ponownego zamówienia jako ciąg
.wType pColumnInfo [8] = typem DBTYPE_STR;
.ulColumnSize pColumnInfo [8] = 10;
produkt.AddBindEntry(pColumnInfo[8]);

/ / Możemy dobiegło końca, określając powiązań. Śmiało i powiązania
produkt.BIND();
/ / Zwolnienia pamięci do informacji kolumny, który nas pobierane w / / poprzednie wywołanie GetColumnInfo
CoTaskMemFree(pColumnInfo);

char * pszProductName;
char * pszReorderLevel;
bool bRC;

/ / Pętli rekordy śledzenie informacji.
podczas (produktu.MoveNext() == wartość S_OK)
{
   bRC = produkt.Elementu GetValue (1 & dblProductID);
   pszProductName = char *** produktu.GetValue(2);
   pszReorderLevel = char *** produktu.GetValue(9);

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

Index