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 例程的信息,请参阅技术说明 53。
注意
DAO 数据库类不同于基于开放式数据库连接 (ODBC) 的 MFC 数据库类。 所有 DAO 数据库类名都具有“CDao”前缀。 你仍然可以使用 DAO 类访问 ODBC 数据源。 通常,基于 DAO 的 MFC 类比基于 ODBC 的 MFC 类功能更强。 基于 DAO 的类可以通过自己的数据库引擎访问数据,包括通过 ODBC 驱动程序访问数据。 它们还支持数据定义语言 (DDL) 操作(例如通过类添加表),而非自己调用 DAO。
注意
DAO 记录字段交换 (DFX) 非常类似于在基于 ODBC 的 MFC 数据库类中记录字段交换 (RFX)(CDatabase
CRecordset
)。 如果你了解 RFX,会发现它易于使用 DFX。
CDaoFieldExchange
对象提供发生 DAO 记录字段交换所需的上下文信息。 CDaoFieldExchange
对象支持许多操作,包括绑定参数和字段数据成员以及在当前记录的字段上设置各种标志。 对 FieldType 中CDaoFieldExchange
定义的enum
类型的记录集类数据成员执行 DFX 操作。 可能的 FieldType 值包括:
CDaoFieldExchange::outputColumn
:用于字段数据成员。CDaoFieldExchange::param
:用于参数数据成员。
IsValidOperation 成员函数用于编写自己的自定义 DFX 例程。 你将在 CDaoRecordset::DoFieldExchange 函数中频繁使用 SetFieldType。 有关 DFX 全局函数的详细信息,请参阅记录字段交换函数。 有关为自己的数据类型编写自定义 DFX 例程的信息,请参阅技术说明 53。
继承层次结构
CDaoFieldExchange
要求
标头:afxdao.h
CDaoFieldExchange::IsValidOperation
如果编写自己的 RFX 函数,请在函数开头调用 IsValidOperation
以确定是否可以对特定字段数据成员类型(CDaoFieldExchange::outputColumn
或 CDaoFieldExchange::param
)执行当前操作。
BOOL IsValidOperation();
返回值
如果当前操作适用于正更新的字段类型,则返回非零值。
注解
DFX 机制执行的一些操作仅适用于其中一种可能的字段类型。 遵循现有 RFX 函数的模型。
有关编写自定义 DFX 例程的其他信息,请参阅技术说明 53。
CDaoFieldExchange::m_nOperation
标识要对与字段交换对象关联的 CDaoRecordset 对象执行的操作。
备注
CDaoFieldExchange
对象为记录集中多个不同的 DFX 操作提供上下文。
注意
PSEUDONULL
下面所述的MarkForAddNew
值和SetFieldNull
操作是用于标记字段 Null 的值。 DAO 记录字段交换机制 (DFX) 使用此值来确定哪些字段已显式标记为 Null。 PSEUDONULL
不需要 COleDateTime
字段 COleCurrency
和字段。
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 参数将标识由 SetFieldType
调用之后的 DFX 函数调用所表示的数据成员的类型。