共用方式為


CRecordset::DoFieldExchange

呼叫以便交換資料 (在兩個方向) 在資料錄集的欄位資料成員和資料來源中的對應資料錄之間。 實作資料錄欄位交換 (Record Field Exchange,RFX)。

virtual void DoFieldExchange( 
   CFieldExchange* pFX  
);

參數

  • pFX
    CFieldExchange 物件的指標。 架構會已經設定這個物件的欄位交換作業指定內容。

備註

大量資料列擷取未實作時,架構會呼叫此成員函式會自動切換成在資料錄集物件的欄位資料成員和目前的資料錄和之間的對應資料行中的資料來源的。 您也DoFieldExchange 繫結的參數資料成員,如果有的話,必須在 SQL 陳述式字串中參數替代符號資料錄集選取的。

如果大量資料列擷取實作,架構會呼叫 DoBulkFieldExchange。 若要實作大量資料列擷取,您可以在 開啟 成員函式必須指定 dwOptions 參數的 CRecordset::useMultiRowFetch 選項。

注意事項注意事項

才可以使用 CRecordset,衍生自的類別DoFieldExchange 可用。如果您建立資料錄集物件會直接從 CRecordset,您必須呼叫 GetFieldValue 成員函式來擷取資料。

欄位資料交換,呼叫資料錄欄位交換 (RFX),在雙向運作:從資料錄之欄位的資料錄集物件的欄位資料成員至資料來源的和從資料來源中的資料錄至資料錄集物件。

您通常必須採用實作自己的衍生資料錄集類別的 DoFieldExchange 的動作是使用 ClassWizard 和的類別指定欄位資料成員的名稱和資料型別。 您也可以將程式碼加入至指定參數資料成員或處理哪些 ClassWizard 寫入任何資料行您動態繫結。 如需詳細資訊,請參閱本文 資料錄集:動態地繫結資料行 (ODBC)

當您宣告使用 ClassWizard 時的衍生資料錄集類別,精靈會為您撰寫 DoFieldExchange 覆寫,類似於下列範例:

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);
}

如需 RFX 函式的詳細資訊,請參閱本主題 資料錄欄位交換函式

如需範例進一步和詳細資訊,請參閱 DoFieldExchange本文 資料錄欄位交換:RFX 的運作方式。 如需 RFX 的一般資訊,請參閱本文 資料錄欄位交換

例外狀況

這個方法會擲回型別 **CDBException***的例外狀況。

需求

Header: afxdb.h

請參閱

參考

CRecordset 類別

階層架構圖

CRecordset::m_nFields

CRecordset::m_nParams

CRecordset::DoBulkFieldExchange

CRecordset::GetFieldValue

CFieldExchange 類別

其他資源

資料錄欄位交換函式