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 資料庫類別與以 Open Database 連線ivity (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 作業的內容。
注意
下列 MarkForAddNew 和 SetFieldNull 作業底下所述的 PSEUDONull 值是用來標記欄位 Null 的值。 DAO 記錄欄位交換器制 (DFX) 會使用此值來判斷哪些欄位已明確標示為 Null。 COleDateTime 和 COleCurrency 欄位不需要 PSEUDONull。
的可能值為 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
。
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應