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
Elementy członkowskie
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 Data Access Objects (DAO), a nie z klasami Open Database Connectivity (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 enum
typ pola w systemie CFieldExchange
. Możliwe wartości FieldType to:
CFieldExchange::outputColumn
dla elementów członkowskich danych pól.CFieldExchange::inputParam
lubCFieldExchange::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::outputParam
lub 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 CFieldExchange
pliku , 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);
}