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 CFieldExchange
所enum
定義之類型的 recordset 類別數據成員上執行。 可能的 FieldType 值為:
CFieldExchange::outputColumn
欄位數據成員。CFieldExchange::inputParam
或CFieldExchange::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::inputParam
CFieldExchange::outputColumn
、、 CFieldExchange::param
CFieldExchange::outputParam
或 CFieldExchange::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);
}