分享方式:


CFieldExchange 類別

支援資料庫類別使用的資料錄欄位交換 (RFX) 和大量資料錄欄位交換 (Bulk RFX) 常式。

語法

class CFieldExchange

成員

公用方法

名稱 描述
CFieldExchange::IsFieldType 如果目前的作業適用於要更新的字段類型,則傳回非零。
CFieldExchange::SetFieldType 指定記錄集數據成員的型別 ,數據行或參數,由下列所有 RFX 函式的呼叫表示,直到下一次呼叫 SetFieldType為止。

備註

CFieldExchange 沒有基類。

如果您要為自定義數據類型撰寫數據交換例程,或是在實作大量數據列擷取時,請使用這個類別;否則,您不會直接使用這個類別。 RFX 和大量 RFX 會交換記錄集物件的欄位資料成員與數據源上目前記錄的對應欄位之間的數據。

注意

如果您使用數據存取物件 (DAO) 類別,而不是 Open Database Connectivity (ODBC) 類別,請改用 CDaoFieldExchange 類別。 如需詳細資訊,請參閱概觀:資料庫程序設計一文

CFieldExchange物件提供要進行記錄欄位交換或大量記錄欄位交換所需的內容資訊。 CFieldExchange 對象支援許多作業,包括係結參數和欄位數據成員,以及在當前記錄的欄位上設定各種旗標。 RFX 和大量 RFX 作業是在 中 FieldType CFieldExchangeenum定義之類型的 recordset 類別數據成員上執行。 可能的 FieldType 值為:

  • CFieldExchange::outputColumn 欄位數據成員。

  • CFieldExchange::inputParamCFieldExchange::param 輸入參數數據成員。

  • CFieldExchange::outputParam 表示輸出參數數據成員。

  • CFieldExchange::inoutParam 用於輸入/輸出參數數據成員。

大部分類別的成員函式和數據成員都提供來撰寫您自己的自定義 RFX 例程。 您會經常使用 SetFieldType 。 如需詳細資訊,請參閱 Record Field Exchange (RFX)Recordset (ODBC) 文章。 如需大量數據列擷取的相關信息,請參閱記錄集:大量擷取記錄一文(ODBC)。 如需 RFX 和大量 RFX 全域函式的詳細資訊,請參閱 本參考的 MFC 宏和全域一節中的記錄欄位 Exchange 函 式。

繼承階層架構

CFieldExchange

需求

標頭: afxdb.h

CFieldExchange::IsFieldType

如果您撰寫自己的 RFX 函式,請在函式開頭呼叫 IsFieldType ,以判斷目前的作業是否可以在特定欄位或參數數據類型上執行(、CFieldExchange::inputParamCFieldExchange::outputColumn、、 CFieldExchange::paramCFieldExchange::outputParamCFieldExchange::inoutParam)。

BOOL IsFieldType(UINT* pnField);

參數

pnField
這個參數會傳回欄位或參數數據成員的序號。 此數字會對應至 CRecordset::D oFieldExchange 或 CRecordset::D oBulkFieldExchange 函式中的數據成員順序。

傳回值

如果目前的作業可以在目前欄位或參數類型上執行,則為非零。

備註

遵循現有 RFX 函式的模型。

CFieldExchange::SetFieldType

您需要在記錄集類別的 DoFieldExchange 或 DoBulkFieldExchange 覆寫中呼叫 SetFieldType

void SetFieldType(UINT nFieldType);

參數

nFieldType
在 中CFieldExchange宣告的 enum FieldType值,可以是下列其中一項:

  • CFieldExchange::outputColumn

  • CFieldExchange::inputParam

  • CFieldExchange::param

  • CFieldExchange::outputParam

  • CFieldExchange::inoutParam

備註

針對欄位資料成員,您必須使用 的參數CFieldExchange::outputColumn呼叫 SetFieldType ,後面接著呼叫 RFX 或大量 RFX 函式。 如果您尚未實作大量數據列擷取,ClassWizard 會將此 SetFieldType 呼叫放在 的 DoFieldExchange欄位對應區段中。

如果您將記錄集類別參數化,則必須在任何欄位對應區段外再次呼叫 SetFieldType ,後面接著所有參數數據成員的 RFX 呼叫。 每個參數數據成員類型都必須有自己的 SetFieldType 呼叫。 下表區分您可以傳遞給 SetFieldType 的不同值,以代表類別的參數數據成員:

SetFieldType 參數值 參數數據成員的類型
CFieldExchange::inputParam 輸入參數。 傳遞至記錄集查詢或預存程式的值。
CFieldExchange::param CFieldExchange::inputParam相同。
CFieldExchange::outputParam 輸出參數。 記錄集預存程式的傳回值。
CFieldExchange::inoutParam 輸入/輸出參數。 傳入併從記錄集預存程式傳回的值。

一般而言,與欄位數據成員或參數數據成員相關聯的 RFX 函式呼叫每個群組之前,都必須先呼叫 SetFieldType每個SetFieldType呼叫的 nFieldType 參數都會識別呼叫後 SetFieldType RFX 函式呼叫所代表的數據成員類型。

如需處理輸出和輸入/輸出參數的詳細資訊,請參閱 CRecordset 成員函式 FlushResultSet。 如需 RFX 和大量 RFX 函式的詳細資訊,請參閱記錄欄位 Exchange 函式主題。 如需大量數據列擷取的相關信息,請參閱記錄集:大量擷取記錄一文(ODBC)。

範例

此範例顯示數個對 RFX 函式的呼叫,以及對 SetFieldType的隨附呼叫。 請注意, SetFieldType 是透過 pFX 物件的指標呼叫 CFieldExchange

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

另請參閱

階層架構圖表
CRecordset 類別