Note | 该命令在头文件中定义,将由 X# 预处理器预处理为函数调用。如果禁用标准头文件 (-nostddefs),该命令将不可用。如果告诉编译器使用不同的标准头文件(-stddef ),则此命令也可能不可用。 |
搜索 order 中与指定表达式匹配的第一个键,将记录指针定位到相应记录,并设置 Found() 标志。
SEEK <uKeyValue> [SOFTSEEK] [LAST] [[IN|ALIAS] <workarea>]
<uKeyValue> | 与 order 键值匹配的表达式。 |
SOFTSEEK | 如果指定了 SOFTSEEK(或 SetSoftSeek() 为 TRUE),记录指针将定位到具有下一个较高键值的记录,并且在 SEEK 不成功后,Found( ) 返回 FALSE。 只有在没有大于 <uKeyValue> 的键的情况下,EoF() 才会返回 TRUE。 |
如果未指定 SOFTSEEK 且 SetSoftSeek() 为 FALSE,则记录指针将定位到 LastRec() + 1,EOF() 返回 TRUE,并且在 SEEK 失败后 Found() 返回 FALSE。 |
LAST | 如果指定了 LAST,SEEK 会查找指定键值的最后一次出现。 如果未指定 LAST,SEEK 会查找第一次出现的键值。 |
IN | ALIAS <workarea> | 指定执行操作的工作区。 |
如果 SEEK 成功,Found() 将设置为 TRUE,记录指针将定位到匹配记录。
下面的示例使用 SEEK 命令搜索 "Doe":
USE customer NEW
SET INDEX TO customer
SEEK "Doe"
IF Found()
.
. <Statements>
.
ENDIF
下面的示例使用 SEEK 命令的 SOFTSEEK 子句对 "Doe "执行了软查找。 请注意,SOFTSEEK 子句对 SetSoftSeek() 标志没有任何影响:
USE customer NEW
SET INDEX TO customer
? SetSoftSeek() // 失败
SEEK "Doe" SOFTSEEK
? SetSoftSeek() // 仍旧失败
IF !Found()
? Customer->Name // 返回 "Doe" 之后的下一个逻辑名称
ENDIF
XSharp.RT.DLL
DbSeek(), DbSetIndex(), DbSetOrder(), SET INDEX, SET ORDER