Klasa CFieldExchange

Obsługuje procedury wymiany pól rekordów (RFX) i zbiorczej wymiany pól rekordów (Bulk RFX) używane przez klasy baz danych.

Składnia

class CFieldExchange

Członkowie

Metody publiczne

Nazwa/nazwisko opis
CFieldExchange::IsFieldType Zwraca wartość niezerową, jeśli bieżąca operacja jest odpowiednia dla typu aktualizowanego pola.
CFieldExchange::SetFieldType Określa typ elementu członkowskiego danych zestawu rekordów — kolumna lub parametr — reprezentowany przez wszystkie następujące wywołania funkcji RFX do następnego wywołania metody SetFieldType.

Uwagi

CFieldExchange nie ma klasy bazowej.

Użyj tej klasy, jeśli piszesz procedury wymiany danych dla niestandardowych typów danych lub podczas implementowania zbiorczego pobierania wierszy; w przeciwnym razie nie będziesz bezpośrednio używać tej klasy. RFX i Bulk RFX wymienia dane między elementami członkowskimi danych pól obiektu zestawu rekordów i odpowiednimi polami bieżącego rekordu w źródle danych.

Uwaga

Jeśli pracujesz z klasami DaO (Data Access Objects), a nie z klasami Open Database Połączenie ivity (ODBC), użyj klasy CDaoFieldExchange. Aby uzyskać więcej informacji, zobacz artykuł Overview:Database Programming (Omówienie:Programowanie bazy danych).

Obiekt CFieldExchange udostępnia informacje kontekstowe potrzebne do wymiany pól rekordów lub wymiany pól rekordów zbiorczych. CFieldExchange obiekty obsługują wiele operacji, w tym parametry powiązania i składowe danych pól oraz ustawiają różne flagi w polach bieżącego rekordu. Operacje RFX i Bulk RFX są wykonywane na elementach członkowskich danych klasy rekordów typów zdefiniowanych przez enumtyp pola w systemie CFieldExchange. Możliwe wartości FieldType to:

  • CFieldExchange::outputColumn dla elementów członkowskich danych pól.

  • CFieldExchange::inputParam lub CFieldExchange::param dla składowych danych parametrów wejściowych.

  • CFieldExchange::outputParam dla składowych danych parametrów wyjściowych.

  • CFieldExchange::inoutParam dla składowych danych parametrów wejściowych/wyjściowych.

Większość funkcji składowych i składowych danych klasy jest udostępniana do pisania własnych niestandardowych procedur RFX. Będziesz używać SetFieldType często. Aby uzyskać więcej informacji, zobacz artykuły Record Field Exchange (RFX) i Recordset (ODBC). Aby uzyskać informacje na temat zbiorczego pobierania wierszy, zobacz artykuł Zestaw rekordów: pobieranie rekordów zbiorczo (ODBC). Aby uzyskać szczegółowe informacje na temat funkcji globalnych RFX i Bulk RFX, zobacz Funkcje wymiany pól rekordów w sekcji Makra i globalne MFC w tej dokumentacji.

Hierarchia dziedziczenia

CFieldExchange

Wymagania

Nagłówek: afxdb.h

CFieldExchange::IsFieldType

Jeśli napiszesz własną funkcję RFX, wywołaj IsFieldType na początku funkcji, aby określić, czy bieżącą operację można wykonać na określonym polu lub typie danych parametrów (a CFieldExchange::outputColumn, CFieldExchange::inputParam, CFieldExchange::param, CFieldExchange::outputParamlub CFieldExchange::inoutParam).

BOOL IsFieldType(UINT* pnField);

Parametry

pnField
Sekwencyjny numer elementu członkowskiego danych pola lub parametru jest zwracany w tym parametrze. Ta liczba odpowiada kolejności elementu członkowskiego danych w funkcji CRecordset::D oFieldExchange lub CRecordset::D oBulkFieldExchange .

Wartość zwracana

Niezerowe, jeśli bieżąca operacja może być wykonywana na bieżącym polu lub typie parametru.

Uwagi

Postępuj zgodnie z modelem istniejących funkcji RFX.

CFieldExchange::SetFieldType

Musisz wywołać metodę SetFieldType w przesłonięć klasy rekordów DoFieldExchange lub DoBulkFieldExchange .

void SetFieldType(UINT nFieldType);

Parametry

nFieldType
Wartość enum FieldType, zadeklarowana w CFieldExchangepliku , która może być jedną z następujących wartości:

  • CFieldExchange::outputColumn

  • CFieldExchange::inputParam

  • CFieldExchange::param

  • CFieldExchange::outputParam

  • CFieldExchange::inoutParam

Uwagi

W przypadku elementów członkowskich danych pól należy wywołać SetFieldType parametr z parametrem CFieldExchange::outputColumn, a następnie wywołaniami funkcji RFX lub Bulk RFX. Jeśli pobieranie wierszy zbiorczych nie zostało zaimplementowane, klasa ClassWizard umieszcza to SetFieldType wywołanie dla Ciebie w sekcji mapy pól w pliku DoFieldExchange.

Jeśli sparametryzujesz klasę zestawu rekordów, musisz wywołać SetFieldType ją ponownie poza dowolną sekcją mapy pól, a następnie wywołania RFX dla wszystkich składowych danych parametrów. Każdy typ elementu członkowskiego danych parametrów musi mieć własne SetFieldType wywołanie. W poniższej tabeli przedstawiono różne wartości, które można przekazać, aby SetFieldType reprezentować składowe danych parametrów klasy:

SetFieldType wartość parametru Typ elementu członkowskiego danych parametrów
CFieldExchange::inputParam Parametr wejściowy. Wartość przekazywana do zapytania zestawu rekordów lub procedury składowanej.
CFieldExchange::param tak samo jak CFieldExchange::inputParam.
CFieldExchange::outputParam Parametr wyjściowy. Wartość zwracana procedury składowanej zestawu rekordów.
CFieldExchange::inoutParam Parametr wejściowy/wyjściowy. Wartość przekazywana i zwracana z procedury składowanej zestawu rekordów.

Ogólnie rzecz biorąc, każda grupa wywołań funkcji RFX skojarzonych z elementami członkowskimi danych pól lub składowymi danych parametrów musi być poprzedzona wywołaniem metody SetFieldType. Parametr nFieldType każdego SetFieldType wywołania identyfikuje typ elementów członkowskich danych reprezentowanych przez wywołania funkcji RFX, które są zgodne z SetFieldType wywołaniem.

Aby uzyskać więcej informacji na temat obsługi parametrów wyjściowych i wejściowych/wyjściowych, zobacz funkcję składową CRecordset FlushResultSet. Aby uzyskać więcej informacji na temat funkcji RFX i Bulk RFX, zobacz temat Funkcje wymiany pól rekordów. Aby uzyskać powiązane informacje na temat zbiorczego pobierania wierszy, zobacz artykuł Recordset: Fetching Records in Bulk (ODBC) (Zestaw rekordów: pobieranie rekordów zbiorczo (ODBC).

Przykład

W tym przykładzie pokazano kilka wywołań funkcji RFX z towarzyszącymi wywołaniami elementu SetFieldType. Należy pamiętać, że SetFieldType jest wywoływany pFX przez wskaźnik do CFieldExchange obiektu.

void CSections::DoFieldExchange(CFieldExchange *pFX)
{
   pFX->SetFieldType(CFieldExchange::outputColumn);
   RFX_Text(pFX, _T("[CourseID]"), m_CourseID);
   RFX_Text(pFX, _T("[InstructorID]"), m_InstructorID);
   RFX_Text(pFX, _T("[RoomNo]"), m_RoomNo);
   RFX_Text(pFX, _T("[Schedule]"), m_Schedule);

   // output parameter
   pFX->SetFieldType(CFieldExchange::outputParam);
   RFX_Long(pFX, _T("Instructor_Count"), m_nCountParam);

   // input parameter
   pFX->SetFieldType(CFieldExchange::inputParam);
   RFX_Text(pFX, _T("Department_Name"), m_strNameParam);
}

Zobacz też

Wykres hierarchii
Klasa CRecordset