Aby używać statycznych akcesor, Twój konsumentów musi mieć rekordu użytkownika. Rekord użytkownika jest klasa C++, która zawiera elementy danych do wprowadzania uchwytu lub danych wyjściowych. Kreator obiektu ATL generuje rekord użytkownika dla użytkownika konsumenta. Metody można dodać do rekordu użytkownika dla zadań opcjonalnych, takich jak obsługa polecenia.
Poniższy kod ilustruje rekord próbki, która obsługuje polecenia. W rekordzie użytkownika BEGIN_OLUMN_MAP reprezentuje wierszy danych przekazany do konsumenta od dostawcy. BEGIN_PARAM_MAP reprezentuje zbiór parametry polecenia. W tym przykładzie klasy CCommand do obsługi parametry polecenia. Członkowie danych w zapisach mapę reprezentują przesunięcia do jednego ciągłego bloku pamięci dla każdej instancji klasy. Makra COLUMN_ENTRY odpowiadają makra PROVIDER_COLUMN_ENTRY po stronie dostawcy.
Więcej informacji na temat makr COLUMN_MAP i PARAM_MAP zobacz makra OLE DB konsumenta szablonów.
klasa CArtists
{
publiczne:
/ / Elementów danych
CHAR m_szFirstName [20];
CHAR m_szLastName [30];
krótkie m_nAge;
/ Wyjście mapie wiążący
BEGIN_COLUMN_MAP(CArtists)
COLUMN_ENTRY (1, m_szFirstName)
COLUMN_ENTRY (2, m_szLastName)
COLUMN_ENTRY (3, m_nAge)
END_COLUMN_MAP()
/ / Parametr wiążące mapę
BEGIN_PARAM_MAP(CArtists)
COLUMN_ENTRY (1, m_nAge)
END_PARAM_MAP
}
Poniższy przykład ilustruje rekordu użytkownika, zmodyfikowane do obsługi wielu akcesorów na zestawie wierszy. Zamiast BEGIN_COLUMN_MAP i END_COLUMN_MAPwykorzystuje BEGIN_ACCESSOR_MAP i BEGIN_ACCESSOR dla każdego typu accessor. Makro BEGIN_ACCESSOR określa liczbę akcesor (przesunięcie od zera) i czy akcesor jest autoaccessor. Autoaccessors wywołania GetData do pobierania danych automatycznie na wywołać funkcję MoveNext. Nieautomatyczne akcesorów wymagają wyraźnie pobierania danych. Użyj akcesor nieautomatyczne, jeśli są wiążące z polem dużych danych (np. obraz bitmapowy), który może chcesz pobrać dla każdego rekordu.
klasa CMultiArtists
{
publiczne:
/ / Elementów danych
CHAR m_szFirstName [20];
CHAR m_szLastName [30];
krótkie m_nAge;
/ Wyjście mapie wiążący
BEGIN_ACCESSOR_MAP (CMultiArtists, 2)
BEGIN_ACCESSOR (0, wartość true)
COLUMN_ENTRY (1, m_szFirstName)
COLUMN_ENTRY (2, m_szLastName)
END_ACCESSOR()
BEGIN_ACCESSOR (1, wartość false) / / nie akcesor auto
COLUMN_ENTRY (3, m_nAge)
END_ACCESSOR()
END_ACCESSOR_MAP()
}