CDaoRecordset

CObject
 └CDaoRecordset

一个CDaoRecordset对象表示从数据源中选择的一组记录。作为“记录集”,CDaoRecordset对象在以下三种窗体中有效:
·表型记录集表示一个基本表,可以用它从单个数据库表中检查、添加、改变或删除记录。
·动态集型记录是一个查询的结果,可以包含可更新的记录。这个数据集是一组记录,可以用它从一个或多个基本数据库表中检查、添加、改变或删除记录。动态集型记录集包含来自一个数据库中一个或多个表的字段。
·快照型记录集是一组记录的一个静态拷贝,可以用它查找数据或生成报表。这些记录集可以包含来自一个数据库中一个或多个表的字段,不过不可更新。
记录集的每个窗体表示记录集在打开时所固定的一组记录。在表型记录集或动态集型记录集中滚动到一个记录时,它反映了记录集打开后,由其它用户或者应用中其它记录集对记录所做的改动(快照型记录集不可更新)。可以直接使用CDaoRecordset,也可以从CDaoRecordset派生出一个应用指定记录集。然后可以:
·在记录集中滚动。
·设置索引并使用Seek快速查找记录(只对表型记录集)。
·基于字符串比较:“<”,“<=”,“=”,“>=”或“>”的记录查找(对动态集型和快照型记录集)。
·更新记录并指定一种封锁模式(除了数据源中选择的记录)。
·过滤数据集,以限制它从有效数据源中选择的记录。
·排序记录集。
·参数化记录集,按运行时才知道的信息定制选择。
类CDaoRecordset提供了接口与类CRecordSet类似,主要区别在于类CDaoRecordset通过基于OLE的数据访问对象(DAO)访问数据。类CRecordSet通过开放数据库连接(ODBC)和适用于此DBMS的ODBC驱动程序访问DBMS。
注意:
DAO数据库类与基于开放数据库连接(ODBC)的MFC数据库类截然不同。所有DAO数据库类名均以“CDao”作前缀。你仍然可以用DAO类访问ODBC数据源;由于DAO类指定于Microsoft Jet数据库引擎,它们通常提供了超强的功能。
既可以直接使用CDaoRecordset,也可以由CDaoRecordset派生出一个类。两种情况下,要使用记录集类,需打开一个数据库并构造记录集对象,向构造程序传送一个指向CDaoDatabase对象的指针。接下来调用记录集的Open成员函数,指定对象是表型、动态集型还是快照型记录集。调用Open,从数据库中选择数据并获取第一条记录。
使用对象的成员函数和数据成员,可以滚动并操纵记录。操作有效性取决于对象是表型记录集、动态集型记录集还是快照型记录集,并且它是可更新的还是只读的──这依赖于数据库或开放数据库连接(ODBC)数据源的功能。要更新Open调用之后可能已改变或添加的记录,需调用对象的Requery成员函数。结束时调用对象的Close成员函数并销毁这个对象。
CDaoRecordset使用DAO记录字段交换(DFX),以支持通过CDaoRecordset或CDaoRecordset派生类的安全型C++成员对记录字段的读取更新。利用GetFieldValue和SetFieldValue,也可以不用DFX机制而实现对数据库列的动态绑定。
有关记录集的更多信息,请参阅联机文档“Visual C++程序员指南”中的“DAO:记录集的结构”。有关信息,请参阅DAO帮助中的“记录集对象”。
#include <afxdao.h>

请参阅:
CDaoTableDef, CDaoWorkspace, CDaoDatabase, CDaoQueryDef


CDaoRecordset类成员

数据成员
m_bCheckCacheForDirtyFields包含一个标记,指示字段在改变时是否自动作记号
m_pDAORecordset指向记录集对象基础上的DAO接口的一个指针
m_nFields包含从数据源中由记录集选择的记录集类中字段的数据成员数量和列数
m_nParams包含记录集类中参数数据成员数量──由记录集查询传递的参数数量
m_pDatabase用于这个结果集的源数据库。包含一个CDaoDatabase对象的指针
m_strFilter包含用于构造SQL WHERE语句的一个字符串
m_strSort包含用于构造ORDER BY语句的一个字符串

构造函数
CDaoRecordset构造一个CDaoRecordset对象
Close关闭记录集
Open从一个表、动态集或快照创建一个新记录集

属性
CanAppend如果可以通过AddNew成员函数把新记录添加到记录集,则返回非零
CanBookmark如果记录集支持书签,则返回非零
CanRestart如果可以调用Requery再次运行记录集查询,则返回非零
CanScroll如果可以在记录中滚动,则返回非零
CanTransact如果数据源支持事务,则返回非零
CanUpdate如果记录集可更新,则返回非零(可以添加、更新或删除记录)
GetCurrentIndex返回一个CString,包含在具有索引的表型CDaoRecordset上最近使用的索引名
GetDateCreated返回CDaoRecordset对象基础上创建基本表的日期和时间
GetDateLastUpdated返回对CDaoRecordset对象基础上基本表设计最近改变的日期和时间
GetEditMode返回指示当前记录编辑状态的一个值
GetLastModifiedBookmark用于确定最近添加或更新的记录
GetName返回包含记录集名字的一个CString
GetParamValue获取在基本DaoParameter对象中存储的指定参数当前值
GetRecordCount返回在一个记录集对象中访问的记录数
GetSQL获取用于从记录集选择记录的SQL字符串
GetType调用以确定记录集的类型:表型、动态集型或快照型
GetValidationRule返回包含使输入字段的数据有效的CString值
GetValidationText获取有效性规则未满足时显示的文本
IsBOF如果记录集定位在第一条记录之前,则返回非零。不存在当前记录
IsDeleted如果记录集定位在一个删除的记录上,则返回非零
IsEOF如果记录集定位在最后一条记录上,则返回非零
IsFieldDirty如果当前记录中指定字段发生变化,则返回非零
IsFieldNull如果当前记录中指定字段置为NULL(不含任何值),则返回非零
IsFieldNullable如果当前记录中指定字段可以置为NULL(不含任何值),则返回非零。
IsOpen如果以前调用过Open,则返回非零。
SetCurrentIndex调用以设置在表型记录集上的索引。
SetParamValue设置基本DAOParameter对象中保存的指定参数的当前值。
SetParamValueNull设置指定参数的当前值为NULL(不含任何值)。

记录集更新操作
AddNew准备添加一条新记录,调用Update以完成添加
CancelUpdate取消由Edit或AddNew操作进行的任何以前的更新
Delete从记录集删除当前记录,删除后必须明确地滚动到第一条记录
Edit准备改变当前记录。调用Update以完成添加
Update在数据源存储新的或编辑过的数据以完成AddNew或Edit操作

记录集导航操作
Find在满足指定条件动态集型记录集中,定位满足条件的第一个、下一个、上一个或最后一个位置,并使那条记录成为当前记录
FindFirst在满足指定条件动态集型记录集中,定位满足条件的第一条记录,并使那条记录成为当前记录
FindLast在满足指定条件动态集型记录集中,定位满足条件的最后一条记录,并使那条记录成为当前记录
FindNext在满足指定条件动态集型记录集中,定位满足条件的下一条记录,并使那条记录成为当前记录
FindPrev在满足指定条件动态集型记录集中,定位满足条件的上一条记录,并使那条记录成为当前记录
GetAbsolutePosition返回记录集对象当前记录的记录数
GetBookmark返回一个值,表示记录上的书签
GetPercentPosition以占记录总数百分比的形式,返回当前记录的位置
Move在任意方向上,把记录集从当前位置移到一个指定的记录号
MoveFirst在记录集中,把当前记录置为第一条记录
MoveLast在记录集中,把当前记录置为最后一条记录
MoveNext在记录集中,把当前记录置为下一条记录
MovePrev在记录集中,把当前记录置为上一条记录
Seek按照当前索引,在满足指定条件的建立索引的表型记录集对象中定位记录,并使那条记录成为当前记录
SetAbsolutePosition设置记录集对象当前记录的记录数
SetBookmark把记录集定位在包含指定书签的一个记录上
SetPercentPosition把当前记录的位置设置在对应于记录集中记录总数百分比的位置

其它记录集操作
FillCache对包含来自ODBC数据源的数据的记录集对象,填充全部或一部分局部缓存
GetCacheSize返回一个值,指定动态集型记录集中记录数,包含局部缓存中来自ODBC数据源的数据
GetCacheStart返回一个指定要缓存的记录集中第一条记录的书签
GetFieldCount返回表示记录集中字段数量的一个值
GetFieldInfo返回记录集中关于字段的指定类型信息
GetFieldValue返回记录集中一个字段的值
GetIndexCount获取记录集基础上的一个表中的索引数量
GetIndexInfo返回有关索引的各种信息
GetLockingMode返回一个值,表示编辑期间生效的封锁类型
Requery再次运行记录集查询以更新选择的记录
SetCacheSize设置一个值,指定记录集中的一定数目的数据从ODBC数据源中读取时被局部缓存
SetCacheStart设置一个值,指定记录集中的第一个记录的书签要被缓存
SetFieldDirty在当前记录改变时对指定字段做记号
SetFieldNull把当前记录中指定字段的值设置为NULL(不含任何值)
SetFieldValue设置记录集中一个字段的值
SetFieldValueNull把记录集中一个字段的值设置为NULL(不含任何值)
SetLockingMode设置一个值,表示编辑期间生效的封锁类型

可覆盖的函数
DoFieldExchange调用以在记录集的字段数据成员和数据源上相应记录之间交换数据(双向),实现DAO记录字段交换(DFX)
GetDefaultDBName返回缺省数据源的名字
GetDefaultSQL调用以返回要执行的缺省SQL字符串