CDynamicAccessor를 사용할 때 명령 Open 메서드 접근자에 대 한 자동으로 만들어지는 열린된 행 집합의 열 정보를 기반으로 합니다. 열 바인딩되는 방법을 정확 하 게 제어 하려면 동적 접근자를 재정의 수 있습니다.
동적 접근자를 재정의 하려면 false 마지막 매개 변수로 CCommand::Open 메서드에 전달 합니다. 이 접근자를 자동으로 만드는에서 열 수 없습니다. 그런 다음 GetColumnInfo 를 호출 하 고 바인딩할 각 열에 대해 AddBindEntry 를 호출 수 있습니다. 다음 코드에서는 그것을 할 방법을 보여 줍니다.
USES_CONVERSION;
더블 dblProductID;
CCommandlt;CDynamicAccessor > 제품;
/ / 자동 바인딩 제품 사용 하지 않으려면 false를 전달 하는 테이블을 엽니다.오픈 (세션, _T ("Select * 제품에서"), NULL, NULL, DBGUID_DEFAULT, false);
ULONG nColumns;
DBCOLUMNINFO * pColumnInfo;
/ / 열린된 행 집합에서 열 정보를 얻을
제품입니다.GetColumnInfo (nColumns, & pColumnInfo);
/ / Double로 제품 ID 바인딩
pColumnInfo [0].wtype = DBTYPE_R8;
pColumnInfo [0].ulcolumnsize = 8;
제품입니다.AddBindEntry(pColumnInfo[0]);
/ / 그것은 제품 이름 바인딩
제품입니다.AddBindEntry(pColumnInfo[1]);
/ / 문자열로 발주량 바인딩
pColumnInfo [8].wtype = DBTYPE_STR;
pColumnInfo [8].ulcolumnsize = 10;
제품입니다.AddBindEntry(pColumnInfo[8]);
/ / 우리는 바인딩을 지정을 완료 했습니다. 전진 하 고 바인딩
제품입니다.Bind ();
/ / 우리가 검색 열 정보에 대 한 메모리를 무료 / / 이전 Getcolumninfo를 호출
CoTaskMemFree(pColumnInfo);
char * pszProductName;
char * pszReorderLevel;
bool 사업단;
/ / 정보 추적 레코드를 반복 합니다.
동안 (제품.MoveNext() = S_OK)
{
사업단 제품 =.GetValue (1, & dblProductID);
pszProductName = (char *) 제품입니다.GetValue(2);
pszReorderLevel = (char *) 제품입니다.GetValue(9);
ATLTRACE (_T ("재정의 %lf \"%s\ = "\"%s\"\n"), dblProductID,
A2T(pszProductName), A2T(pszReorderLevel));
}