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)(CDatabaseCRecordset)。 如果你了解 RFX,会发现它易于使用 DFX。

CDaoFieldExchange 对象提供发生 DAO 记录字段交换所需的上下文信息。 CDaoFieldExchange 对象支持许多操作,包括绑定参数和字段数据成员以及在当前记录的字段上设置各种标志。 DFX 操作是在类型(由 CDaoFieldExchange 中的 enum FieldType 定义)的记录集类数据成员上执行的。 可能的 FieldType 值包括

  • CDaoFieldExchange::outputColumn:用于字段数据成员。

  • CDaoFieldExchange::param:用于参数数据成员。

IsValidOperation 成员函数用于编写自己的自定义 DFX 例程。 你将在 CDaoRecordset::DoFieldExchange 函数中频繁使用 SetFieldType。 有关 DFX 全局函数的详细信息,请参阅记录字段交换函数。 有关为自己的数据类型编写自定义 DFX 例程的信息,请参阅技术说明 53

继承层次结构

CDaoFieldExchange

要求

标头:afxdao.h

CDaoFieldExchange::IsValidOperation

如果编写自己的 RFX 函数,请在函数开头调用 IsValidOperation 以确定是否可以对特定字段数据成员类型(CDaoFieldExchange::outputColumnCDaoFieldExchange::param)执行当前操作。

BOOL IsValidOperation();

返回值

如果当前操作适用于正更新的字段类型,则返回非零值。

注解

DFX 机制执行的一些操作仅适用于其中一种可能的字段类型。 遵循现有 RFX 函数的模型。

有关编写自定义 DFX 例程的其他信息,请参阅技术说明 53

CDaoFieldExchange::m_nOperation

标识要对与字段交换对象关联的 CDaoRecordset 对象执行的操作。

备注

CDaoFieldExchange 对象为记录集中多个不同的 DFX 操作提供上下文。

注意

下述 MarkForAddNew 和 SetFieldNull 操作下介绍的 PSEUDONULL 值用于标记字段 Null。 DAO 记录字段交换机制 (DFX) 使用此值来确定哪些字段已显式标记为 Null。 COleDateTimeCOleCurrency 字段不需要 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 参数将标识由 SetFieldType 调用之后的 DFX 函数调用所表示的数据成员的类型

另请参阅

层次结构图
CDaoRecordset 类