Functions.DbSetIndex 方法 | |
在工作区中打开一个索引文件并将其所有排序添加到排序列表中。
命名空间:
XSharp.RT
程序集:
XSharp.RT (在 XSharp.RT.dll 中) 版本:2.22 GA
语法 FUNCTION DbSetIndex(
cIndexFile,
uOrder
) AS LOGIC CLIPPER
[ClipperCallingConventionAttribute(new string[] { ... })]
public static bool DbSetIndex(
__Usual cIndexFile = default,
__Usual uOrder = default
)
查看代码参数
- cIndexFile (Optional)
- 类型:__Usual
要打开的索引文件的名称,包括可选的驱动器、目录和每个文件的扩展名。参见 SetDefault() 和 SetPath() 了解文件搜索和创建规则。
默认扩展名由 RDD 决定,可以使用 DBOrderInfo(DBOI_INDEXEXT) 获取。
如果 cIndexFile 不存在,将引发运行时错误。
如果存在,此函数将尝试以与相应数据库文件相同的模式打开文件。
如果访问被拒绝(例如,因为另一个进程正在使用该文件而此进程请求独占使用),NetErr() 将被设置为 TRUE。
否则,文件打开成功。
并发冲突对于索引文件来说很少见,因为它们通常只与一个数据库文件一起使用。
如果出现并发问题,通常会在尝试打开数据库文件时发生。
- uOrder (Optional)
- 类型:__Usual
Order in the index file to activate. When not specified then the first order in the file becomes active.
返回值
类型:
Boolean
如果成功则返回 TRUE;否则返回 FALSE。
备注
默认情况下,此函数在当前选定的工作区上操作。
可以通过在别名表达式中指定来使其在未选定的工作区上操作。
如果在发出 DBSetIndex() 时工作区的排序列表为空,则索引文件中的第一个排序将成为控制排序。
如果工作区已经关联了排序,它们不会受到影响 — 新排序只是简单地添加到当前排序列表中。
在新索引文件打开后(使用与其关联的数据库文件相同的打开模式),工作区将定位到控制排序中的第一个逻辑记录。
打开索引文件会对数据库文件中的记录施加逻辑顺序(由控制排序定义),并可能根据 for 条件或唯一标志过滤记录。
这意味着当您处理数据库文件时,记录将按控制排序确定的顺序出现,而被过滤的记录虽然在数据库文件中仍然物理存在,但将无法访问。
提示: |
---|
除了某些 RDD 支持的生产索引文件外,索引文件在打开相应的数据库文件时不会自动打开。
为确保索引文件得到准确维护,您应该在对相应数据库文件进行任何更新之前打开它们,或在稍后使用 DBReindex() 重建它们。
|
示例
以下示例打开多个索引文件:
1DBUseArea(TRUE, "DBFNTX", "sales", "Sales", TRUE)
2Sales->DBSetIndex("FirstName")
3Sales->DBSetIndex("LastName")
4IF Sales->DBSeek(cLast)
5 IF Sales->Deleted() .AND. Sales->RLock()
6 Sales->DBRecall()
7 QOut("已恢复已删除的记录。")
8 ENDIF
9ELSE
10 QOut("未找到")
11ENDIF
参见