CDaoRecordset::Seek

调用该成员函数的定位记录满足当前索引的指定条件的已标记的表类型的记录集对象并使记录当前记录。

BOOL Seek(
   LPCTSTR lpszComparison,
   COleVariant* pKey1,
   COleVariant* pKey2 = NULL,
   COleVariant* pKey3 = NULL 
);
BOOL Seek(
   LPCTSTR lpszComparison,
   COleVariant* pKeyArray,
   WORD nKeys 
);

参数

  • lpszComparison
    以下字符串表达式之一:“<”、“<=”、“=”、“>=”或“>”。

  • pKey1
    为值对应于索引的第一个字段的 COleVariant 的指针。 必需。

  • pKey2
    为值对应于索引的第二个字段的 COleVariant 的指针,因此,如果有的话)。 为 NULL的默认值。

  • pKey3
    为值对应于索引的第三个字段的 COleVariant 的指针,因此,如果有的话)。 为 NULL的默认值。

  • pKeyArray
    指向的指针变量。 数组大小相对应的字段数在索引中。

  • nKeys
    与数组相对应的大小的整数,是字段数在索引中。

    备注

    不要指定通配符在键。通配符不会导致 Seek 返回匹配的记录。

返回值

非零,则匹配记录找到;否则为0。

备注

使用 Seek 的第二个(数组)版本为四个字段或更多的处理索引。

Seek 启用搜索在表型记录集的高性能索引。 必须通过调用 SetCurrentIndex 设置当前索引在调用 Seek之前。 如果索引标识一个非唯一的键字段或字段,Seek 隔离满足条件的第一个记录。 如果未设置索引,将引发异常。

请注意,如果没有创建的UNICODE记录集,必须显式声明 COleVariant 对象ANSI。 这可以通过使用构造函数的 COleVariant::COleVariant( lpszSrc**,** vtSrc ) 窗体将 vtSrc 的设置为 VT_BSTRT (ansi)或使用 COleVariant 功能 SetString( lpszSrc**,** vtSrc ) 和 vtSrc 设置为 VT_BSTRT

当您调用 Seek时,可以通过一个或多个键值和比较运算符(“<”、“<=”、“=”、“>=”或“>”)。 Seek 通过指定的键字段搜索和独立满足 lpszComparison 和 pKey1指定条件的第一个记录。 一次用于查找,Seek 返回非零,并使该当前记录。 如果 Seek 未能找到匹配项,Seek 返回零,并且,当前记录未定义。 当直接时使用DAO,您必须显式检查NoMatch属性。

如果 lpszComparison 为“=”,“>=”或“>”,Seek 在索引的开头开始。 如果 lpszComparison 为“<”或“<=”,Seek 索引处开始的末尾和向后搜索,除非有重复索引项在末尾。 在这种情况下,Seek 开始在重复索引项中的任意项在索引的末尾。

当您使用 Seek时,不需要具有一个当前记录。

若要定位记录满足特定条件的一动态类型或快照型记录集,请使用查找操作。 若要包含所有记录,而不仅仅满足特定条件的那些,使用移动操作在记录间移动到记录。

因为必须打开附加的表作为动态类型或快照型记录集,不能对任何类型的一个附加的表的 Seek。 但是,调用,则 CDaoDatabase::Open 直接打开一个可安装的ISAM数据库,可以对表的 Seek 在该数据库中,不过,性能可能会很慢。

有关相关信息,请参见主题“查找方法” DAO帮助。

要求

Header: afxdao.h

请参见

参考

CDaoRecordset选件类

层次结构图

CDaoRecordset::FindFirst

CDaoRecordset::FindLast

CDaoRecordset::FindNext

CDaoRecordset::FindPrev

CDaoRecordset::Move

CDaoRecordset::MoveFirst

CDaoRecordset::MoveLast

CDaoRecordset::MoveNext

CDaoRecordset::MovePrev

COleVariant::COleVariant

COleVariant::SetString