Note | 该命令在头文件中定义,将由 X# 预处理器预处理为函数调用。如果禁用标准头文件 (-nostddefs),该命令将不可用。如果告诉编译器使用不同的标准头文件(-stddef ),则此命令也可能不可用。 |
打开一个或多个索引文件,并将其 order 添加到当前工作区的 order 列表中。
SET INDEX TO [<xcIndexFileList> [ADDITIVE]]
TO <xcIndexFileList> | 要打开的索引文件名,包括可选的驱动器、目录和扩展名。 有关文件搜索和创建规则,请参阅 SetDefault() 和 SetPath()。 默认扩展名由 RDD 决定,可使用 DBOrderInfo(DBOI_INDEXEXT) 获取。 |
如果列表中的文件不存在,则会出现运行时错误。 如果存在,该命令将尝试以与相应数据库文件相同的模式打开该文件。 如果由于其他进程正在使用该文件而该进程要求独占该文件等原因而拒绝访问,NetErr() 将被设置为 TRUE。 否则,文件打开成功后,命令将转到列表中的下一个文件。 |
索引文件很少发生并发冲突,因为它们只能与一个数据库文件一起使用。 如果出现并发问题,通常是在尝试打开数据库文件时。 |
不带文件名的 SET INDEX TO 将清除当前 order 列表。 |
ADDITIVE | 将指定索引文件中的 order 添加到当前 order 列表,保留控制 order 。 如果未指定,则会从指定的索引文件中创建一个新的 order 列表,取代当前 order 列表。 |
如果工作区不存在 order 列表,或者 SET INDEX 正在替换当前 order 列表,则 RDD 类型将决定是否设置控制 order 。 对于仅支持单序索引文件的 RDD(如 DBFNTX),控制顺序将设置为指定索引文件中的顺序。 对于支持多顺序索引文件(如 DBFMDX)的 RDD,通常需要明确设置控制顺序(例如,使用 SET ORDER 或 DbSetOrder() ),否则,即使存在有效的顺序列表,数据文件也可能按自然顺序处理。
打开新索引文件后,工作区将定位到控制顺序中的第一条逻辑记录,随后的所有数据库操作都将使用控制顺序来处理记录。
在数据库处理过程中,每当键值添加或更改时,都会更新顺序列表中的所有顺序,同时尊重顺序中的任何 for 条件或唯一标志。 要在不影响当前订单列表的情况下更改控制 order ,请使用 SET ORDER 或 DBSetOrder()。 要查找特定 order 或索引文件的信息,请使用 DBOrderInfo()。
如果使用索引文件列表指定 SET INDEX TO,其功能等同于使用多个 DBSetIndex() 函数调用。 如果没有指定 ADDITIVE 子句,命令将首先调用 DBClearFilter()。
本例打开一个数据库和几个相关的索引文件:
USE sales NEW
SET INDEX TO sales, sales1, sales2
下一个示例将打开一个索引文件,但不会关闭任何已打开的文件:
SET INDEX TO sales3 ADDITIVE
XSharp.RT.DLL
CLOSE, DBClearIndex(),DbOrderInfo(), DBSetIndex(), DBSetOrder(),INDEX, REINDEX, SET ORDER, SetDefault(), SetPath() USE