Note | 该命令在头文件中定义,将由 X# 预处理器预处理为函数调用。如果禁用标准头文件 (-nostddefs),该命令将不可用。如果告诉编译器使用不同的标准头文件(-stddef ),则此命令也可能不可用。 |
为当前工作区设置控制顺序。
SET ORDER TO [<nPosition> | TAG <xcOrder> [IN <xcIndexFile>]]
<nPosition> | TAG <xcOrder> |
新控制 order 的名称或代表其在 order 列表中位置的数字。 使用顺序名称是首选方法,因为使用多顺序索引可能很难确定其位置。 指定值为 0 的特殊效果是将数据库文件恢复为自然顺序。 指定无效值将导致运行错误。 |
注意:该命令的语法不同于其他 Xbase 方言,在其他方言中,TAG 关键字是可选的。 |
IN <xcIndexFile> | 索引文件的名称,包括可选的驱动器和目录(不应指定扩展名)。 当不同索引文件中有两个或多个同名 order 时,使用该参数可消除歧义。 |
如果当前进程未在当前工作区打开 <xcIndexFile>,则会出现运行时错误。 |
不带参数的 SET ORDER TO 与 SET ORDER TO 0 相同。 |
控制 order 决定了处理数据库文件的顺序。 无论当前数据库文件的逻辑顺序由哪个 order 控制,在添加或更新记录时,order 列表中的所有 order 都会正确更新。 即使 SET ORDER 为 0 也是如此。 更改控制 order 不会移动记录指针。
使用此命令前,请使用 SET INDEX 或 DBSetIndex() 将索引文件中的订单添加到订单列表中。
SET ORDER 的功能等同于 DBSetOrder()。
下面的示例说明了 SET ORDER 在多个 order 之间进行选择的典型用法:
USE customer NEW
INDEX ON Lastname TO names
INDEX ON City + State TO region
SET INDEX TO names, region
//
SET ORDER TO TAG "Region"
? DBOrderInfo(DBOI_EXPRESSION)
// 结果: City + State
SET ORDER TO 0
? DBOrderInfo(DBOI_EXPRESSION)
// 结果: NULL_STRING
SET ORDER TO TAG "Names"
? DBOrderInfo(DBOI_EXPRESSION)
// 结果: Lastname
XSharp.RT.DLL
DbOrderInfo(), DbSeek(),DbSetIndex(), DbSetOrder(), INDEX, SEEK, SET INDEX, USE