Udostępnij za pośrednictwem


CRecordset::DoFieldExchange

Nazywane wymiany danych (w obu kierunkach) między członkami pola danych zestawu rekordów i odpowiadającego mu rekordu w źródle danych.Implementuje rejestrować wymiany pól (RFX).

virtual void DoFieldExchange( 
   CFieldExchange* pFX  
);

Parametry

  • pFX
    Wskaźnik do CFieldExchange obiektu.Ramy będzie już skonfigurowano ten obiekt aby określić kontekst dla operacji wymiany pola.

Uwagi

Podczas pobierania wierszy luzem nie jest zaimplementowana, ramy wywołuje tę funkcję Członkowskie automatycznie wymiany danych między członkami danych pola obiektu recordset i odpowiadających im kolumn bieżącego rekordu w źródle danych.DoFieldExchangeJeśli dowolny parametr zastępcze w ciągu instrukcję SQL dla wyboru rekordów także wiąże się z członków swojego danych parametru.

Jeśli zaimplementowano pobieranie wiersza luzem ramach wywołuje DoBulkFieldExchange.Aby zaimplementować pobierania wierszy luzem, należy określić CRecordset::useMultiRowFetch opcji dwOptions parametr w Otwórz funkcji składowej.

[!UWAGA]

DoFieldExchangejest dostępna tylko w przypadku korzystania z klasy pochodzącej od CRecordset.Jeśli utworzono obiekt recordset bezpośrednio z CRecordset, należy wywołać GetFieldValue Członkowskich funkcji do pobierania danych.

Wymiana danych pola o nazwie pole rekordu wymiany (RFX) działa w obu kierunkach: od obiektu recordset pola danych członków do pól rekordu w źródle danych i z rekordu w źródle danych do obiektu recordset.

Tylko działania, zwykle należy wykonać, aby zaimplementować DoFieldExchange swój zestaw rekordów pochodna klasy jest utworzyć klasy z ClassWizard i określić typy nazw i danych członków pola danych.Kod może także dodać do co ClassWizard zapisuje określić parametr danych członków lub postępowania z kolumnami powiąże się dynamicznie.Aby uzyskać więcej informacji, zobacz artykuł rekordów: dynamiczne wiązanie danych kolumn (ODBC).

Przy deklarowaniu klasy pochodnej rekordów z ClassWizard, kreator zapisuje przesłonięcie DoFieldExchange , która przypomina poniższy przykład:

void CCustomer::DoFieldExchange(CFieldExchange* pFX)
{
   pFX->SetFieldType(CFieldExchange::outputColumn);
   // Macros such as RFX_Text() and RFX_Int() are dependent on the
   // type of the member variable, not the type of the field in the database.
   // ODBC will try to automatically convert the column value to the requested type
   RFX_Long(pFX, _T("[CustomerID]"), m_CustomerID);
   RFX_Text(pFX, _T("[ContactFirstName]"), m_ContactFirstName);
   RFX_Text(pFX, _T("[PostalCode]"), m_PostalCode);
   RFX_Text(pFX, _T("[L_Name]"), m_L_Name);
   RFX_Long(pFX, _T("[BillingID]"), m_BillingID);

   pFX->SetFieldType(CFieldExchange::inputParam);
   RFX_Text(pFX, _T("Param"), m_strParam);
}

Aby uzyskać więcej informacji na temat funkcji RFX, zobacz temat Funkcje wymiany pola rekordu.

Dalsze przykłady i szczegółowe informacje o DoFieldExchange, zobacz artykuł wymiany pola rekordu: jak działa RFX.Ogólne informacje o RFX, zobacz artykuł Wymiany pola rekordu.

Wyjątki

Tej metody można zgłosić wyjątków typu CDBException *.

Wymagania

Nagłówek: afxdb.h

Zobacz też

Informacje

Klasa CRecordset

Wykres hierarchii

CRecordset::m_nFields

CRecordset::m_nParams

CRecordset::DoBulkFieldExchange

CRecordset::GetFieldValue

Klasa CFieldExchange

Inne zasoby

Funkcje wymiany pola rekordu