K E Y 函 数
返回索引标识或索引文件的索引关键字表达式
语 法
KEY([ CDXFileNam e,] nIndexNumber [, nWorkArea | cTableAlias ])
返 值 类 型
字符型
参 数 描 述
CDXFileName
指 定 复 合 索 引 文 件 的 文 件 名 KEY 函 数 将 返 回 .CDX 文 件 中 索 引 标 识 的索 引 关 键 字 表 达 式 所 指 定 的 复 合 索 引 文 件 可 以 是 和 表 一 起 自 动 打 开 的 结 构复 合 索 引 文 件 也 可 以 是 独 立 的 复 合 索 引 文 件
nIndexNumber
指 定 要 返 回 哪 一 个 索 引 关 键 字 表 达 式
USE 和 SET INDEX 命令都支持一个索引文件列表 从中可以为一个表同时打开多个索引文件 索引文件列表中可以包含 .IDX 单项索引文件 结构复合索引文件或独立的复合索引文件等三种索引文件的任意组合
数值表达式 nIndexNumber 指定从打开的索引文件中返回哪一个索引表达式 随着
nIndexNumber 从 1 递增到所打开的 .IDX 单项索引文件 结构复合索引文件和独立复合
索引文件三者的总数 KEY 函数将按下列顺序依次从打开的各索引文件中返回索引表达式
- 首
先 返 回 .IDX 单 项 索 引 文 件 如 果 有 此 类 文 件 打 开 中 的 索 引 表 达 式
各 个 单 项 索 引 文 件 在 USE 或 SET INDEX 命 令 中 的 排 列 顺 序 决 定 索 引 表 达式 的 返 回 顺 序
-
其
次 返 回 结 构 复 合 索 引 如 果 有 中 的 每 个 标 识 的 索 引 表 达 式 多 个 标 识的 索 引 表 达 式 的 返 回 顺 序 取 决 于 各 标 识 在 结 构 复 合 索 引 中 的 创 建 顺 序
-
最
后 返 回 打 开 的 独 立 复 合 索 引 中 的 每 个 标 识 的 索 引 表 达 式 多 个 标 识 的 索引 表 达 式 的 返 回 顺 序 取 决 于 标 识 在 独 立 复 合 索 引 中 创 建 的 顺 序
若 nIndexNumber 大于打开的索引文件总数 包括 .IDX 单项索引文件 结构复合索引文件和独立的复合索引文件 则返回空字符串
n W o rkArea
指 定 表 所 在 的 工 作 区 号 KEY 函 数 将 返 回 该 表 的 索 引 关 键 字 表 达 式
如果指定的工作区中没有表打开 则 KEY 函数返回空字符串
cTableAlias
指 定 表 别 名 KEY 函 数 将 返 回 该 表 的 索 引 关 键 字 表 达 式
若指定的表别名不存在 Visual FoxPro 将产生错误信息
若省略 nWorkArea 和 cTableAlias 参数 将返回当前工作区中打开表的索引关键字表达式
说 明
用 INDEX 命令创建索引标识或索引文件时可指定其索引关键字表达式 当该索引标识或索引文件作为主控索引标识或主控索引文件打开时 其索引关键字表达式将决定
表的显示或访问方式
有关创建索引标识 索引文件以及索引关键字表达式的详细内容 请参阅 INDEX
示 例
下面的示例先打开 testdata 数据库中的 customer 表 然后在 FOR ... ENDFOR 创建的循环中使用 KEY 函数来显示 customer 结构索引文件中每个索引标识的索引表达式每个结构索引标识名和它的索引表达式同时显示
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata') USE Customer && 打开 customer 表CLEAR
FOR nCount = 1 TO 254
IF !EMPTY(TAG(nCount)) && 检查索引文件中的标识
? TAG(nCount) + ' ' && 显示标识的名称
?? KEY ( nCount) && 显示索引表达式
ELSE
EXIT && 所有标识都搜索完以后退出循环
ENDIF ENDFOR
请 参 阅
INDEX , REINDEX , SET INDEX , SYS(14)