CDaoFieldExchange 類別
支援 DAO 資料庫類別使用的 DAO 資料錄欄位交換 (DFX) 常式。
注意
DAO 可透過 Office 2013 支援。 DAO 3.6 是最終版本,且被視為過時。
語法
class CDaoFieldExchange
成員
公用方法
名稱 | 描述 |
---|---|
CDaoFieldExchange::IsValidOperation | 如果目前的作業適用於要更新的字段類型,則傳回非零。 |
CDaoFieldExchange::SetFieldType | 指定記錄集數據成員的類型 , 資料行或參數 — 由所有後續呼叫 DFX 函式所表示,直到下一次呼叫 SetFieldType 為止。 |
公用資料成員
名稱 | 描述 |
---|---|
CDaoFieldExchange::m_nOperation | 目前對記錄集 DoFieldExchange 成員函式的呼叫所執行的 DFX 作業。 |
CDaoFieldExchange::m_prs | 執行 DFX 作業之記錄集的指標。 |
備註
CDaoFieldExchange
沒有基類。
如果您要撰寫自定義數據類型的數據交換例程,請使用這個類別;否則,您不會直接使用這個類別。 DFX 會交換 CDaoRecordset 物件的欄位資料成員與數據源上目前記錄的對應欄位之間的數據。 DFX 會從數據源和數據源雙向管理交換。 如需撰寫自定義 DFX 例程的相關信息,請參閱 Technical Note 53 。
注意
DAO 資料庫類別與以開放式資料庫連接性 (ODBC) 為基礎的 MFC 資料庫類別不同。 所有 DAO 資料庫類別名稱都有 「CDao」 前置詞。 您仍然可以使用 DAO 類別存取 ODBC 資料來源。 一般而言,以 DAO 為基礎的 MFC 類別比以 ODBC 為基礎的 MFC 類別更有能力。 DAO 型類別可以透過自己的資料庫引擎存取數據,包括透過 ODBC 驅動程式。 它們也支持資料定義語言 (DDL) 作業,例如透過類別新增數據表,而不必自行呼叫 DAO。
注意
DAO 記錄欄位交換 (DFX) 與 ODBC 型 MFC 資料庫類別中的記錄欄位交換 (CDatabase
CRecordset
RFX) 非常類似。 如果您瞭解 RFX,您會發現很容易使用 DFX。
CDaoFieldExchange
物件提供進行 DAO 記錄欄位交換所需的內容資訊。 CDaoFieldExchange
對象支援許多作業,包括係結參數和欄位數據成員,以及在當前記錄的欄位上設定各種旗標。 DFX 作業是在 中 FieldType CDaoFieldExchange
所enum
定義類型的 recordset 類別數據成員上執行。 可能的 FieldType 值為:
CDaoFieldExchange::outputColumn
欄位數據成員。CDaoFieldExchange::param
用於參數數據成員。
IsValidOperation 成員函式可供撰寫您自己的自定義 DFX 例程。 您將經常在 CDaoRecordset::D oFieldExchange 函式中使用 SetFieldType。 如需 DFX 全域函式的詳細資訊,請參閱 記錄欄位 Exchange 函式。 如需為您自己的數據類型撰寫自定義 DFX 例程的相關信息,請參閱 Technical Note 53。
繼承階層架構
CDaoFieldExchange
需求
標頭: afxdao.h
CDaoFieldExchange::IsValidOperation
如果您撰寫自己的 DFX 函式,請在函式開頭呼叫 IsValidOperation
,以判斷目前的作業是否可以在特定欄位資料類型 ( CDaoFieldExchange::outputColumn
或 CDaoFieldExchange::param
) 上執行。
BOOL IsValidOperation();
傳回值
如果目前的作業適用於要更新的欄位類型,則為非零。
備註
DFX 機制所執行的一些作業僅適用於其中一個可能的欄位類型。 遵循現有 DFX 函式的模型。
如需撰寫自定義 DFX 例程的其他資訊,請參閱 技術附註 53。
CDaoFieldExchange::m_nOperation
識別要對與字段交換對象相關聯的 CDaoRecordset 物件上執行的作業。
備註
CDaoFieldExchange
物件會提供記錄集上數個不同 DFX 作業的內容。
注意
PSEUDONULL
下列和 SetFieldNull
作業底下MarkForAddNew
所述的值是用來標記 Null 欄位的值。 DAO 記錄欄位交換機制 (DFX) 會使用此值來判斷哪些欄位已明確標示為 Null。 PSEUDONULL
與 COleCurrency
欄位不需要 COleDateTime
。
的可能值為 m_nOperation
:
作業 | 描述 |
---|---|
AddToParameterList |
建置 SQL 語句的 PARAMETERS 子句。 |
AddToSelectList |
建置 SQL 語句的 SELECT 子句。 |
BindField |
將資料庫中的欄位系結至應用程式中的記憶體位置。 |
BindParam |
設定記錄集查詢的參數值。 |
Fixup |
設定欄位的 Null 狀態。 |
AllocCache |
配置快取,用來檢查記錄集中的「骯髒」字段。 |
StoreField |
將目前的記錄儲存至快取。 |
LoadField |
還原記錄集中快取的數據成員變數。 |
FreeCache |
釋放用來檢查記錄集中 「髒」欄位的快取。 |
SetFieldNull |
將欄位的狀態設定為 Null,並將值設定為 PSEUDONULL。 |
MarkForAddNew |
如果不是 PSEUDONULL,則標記欄位「已變更」。 |
MarkForEdit |
如果欄位不符合快取,則標示為「已變更」。 |
SetDirtyField |
設定標示為「已變更」的域值。 |
DumpField |
傾印欄位的內容(僅限偵錯)。 |
MaxDFXOperation |
用於輸入檢查。 |
CDaoFieldExchange::m_prs
包含與 對象相關聯的 CDaoFieldExchange
CDaoRecordset 物件的指標。
備註
CDaoFieldExchange::SetFieldType
在類別CDaoRecordset
的DoFieldExchange
覆寫中呼叫 SetFieldType
。
void SetFieldType(UINT nFieldType);
參數
nFieldType
在 中CDaoFieldExchange
宣告的列舉 FieldType 值,可以是下列其中一項:
CDaoFieldExchange::outputColumn
CDaoFieldExchange::param
備註
一般而言,ClassWizard 會為您撰寫此呼叫。 如果您撰寫自己的函式並使用精靈來撰寫函 DoFieldExchange
式,請在欄位對應外部新增您自己的函式呼叫。 如果您不使用精靈,則不會有字段對應。 呼叫會在呼叫 DFX 函式之前,針對類別的每個欄位資料成員呼叫一個,並將欄位類型識別為 CDaoFieldExchange::outputColumn
。
如果您將記錄集類別參數化,則應該針對所有參數數據成員新增 DFX 呼叫(在欄位對應之外),並在這些呼叫前面加上對 SetFieldType
的呼叫。 傳遞值 CDaoFieldExchange::param
。 (您可以改用 CDaoQueryDef 並設定其參數值。
一般而言,與欄位數據成員或參數數據成員相關聯的每個 DFX 函數呼叫群組,前面都必須有對 SetFieldType
的呼叫。 每個SetFieldType
呼叫的 nFieldType 參數會識別 DFX 函式呼叫所代表的數據成員類型,而該呼叫後面接著SetFieldType
。