Functions.DbSort 方法 | |
将记录按排序顺序复制到数据库文件中。
命名空间:
XSharp.RT
程序集:
XSharp.RT (在 XSharp.RT.dll 中) 版本:2.22 GA
语法 FUNCTION DbSort(
cTargetFile,
acFields,
cbForCondition,
cbWhileCondition,
nNext,
nRecord,
lRest,
lNoOpt,
acOutPutFields
) AS LOGIC CLIPPER
[ClipperCallingConventionAttribute(new string[] { ... })]
public static bool DbSort(
__Usual cTargetFile = default,
__Usual acFields = default,
__Usual cbForCondition = default,
__Usual cbWhileCondition = default,
__Usual nNext = default,
__Usual nRecord = default,
__Usual lRest = default,
__Usual lNoOpt = default,
__Usual acOutPutFields = default
)
查看代码参数
- cTargetFile (Optional)
- 类型:__Usual
要写入排序记录的目标数据库文件名,包括可选的驱动器、目录和扩展名。有关文件搜索和创建规则,请参见 SetDefault() 和 SetPath()。
数据库文件的默认扩展名由 RDD 确定。
如果 cTargetFile 不存在,将创建它。
如果它存在,此函数将尝试以独占模式打开文件,如果成功,文件将被覆盖,不会发出警告或错误。
如果由于另一个进程正在使用该文件等原因而被拒绝访问,NetErr() 将被设置为 TRUE。
- acFields (Optional)
- 类型:__Usual
排序键,指定为字段名称数组。您可以在字段名称后面选择性地添加 /A(按字典顺序排序),/C(忽略大小写)或 /D(按降序排序)。默认设置为 /A。 - cbForCondition (Optional)
- 类型:__Usual
定义范围内每条记录必须满足的条件的代码块,以便进行处理。 - cbWhileCondition (Optional)
- 类型:__Usual
定义每条记录必须满足的另一个条件的代码块,以便进行处理。 一旦遇到导致条件失败的记录,操作就会终止。
如果未指定范围,cbWhileCondition 会将默认范围更改为 lRest。
您可以使用这三个互斥参数之一来定义范围。
默认是所有记录。
- nNext (Optional)
- 类型:__Usual
要处理的记录数,从 nRecord 开始。 指定 0 以忽略此参数。 - nRecord (Optional)
- 类型:__Usual
要处理的单个记录号。指定 0 以忽略此参数。 - lRest (Optional)
- 类型:__Usual
TRUE 仅处理从 nStart 到文件末尾的记录。 FALSE 处理所有记录。 - lNoOpt (Optional)
- 类型:__Usual
禁用(Rushmore)优化(尚不支持)。禁用(Rushmore)优化(尚不支持)。 - acOutPutFields (Optional)
- 类型:__Usual
要复制到 cTargetFile 的字段列表。
默认为所有字段
返回值
类型:
Boolean
如果成功则返回 TRUE;否则返回 FALSE。
备注 提示: |
---|
nNext、nRecord 和 lRest 参数是互斥的。您不应同时传递这三个参数。
如果您传递 cbWhile 参数,那么它也会控制范围行为。
|
DBSort() 将当前工作区的记录按排序顺序复制到另一个数据库文件中。
X# 根据字符串中每个字符的 ASCII 值对字符字段进行排序。
数字字段按数字顺序排序,日期字段按时间顺序排序,
逻辑字段排序时 TRUE 为高值。
备注字段不能排序。
DBSort() 尽可能多地在内存中执行操作,然后将结果溢出
到一个唯一命名的临时磁盘文件中。
这个临时文件可能与源数据库文件一样大。
还要注意,DBSort() 会使用三个文件句柄:源数据库文件、
目标数据库文件和临时文件。
如果数据库以共享模式打开,您必须使用 FLock() 锁定要排序的文件。
DBSort() 在功能上等同于 SORT 命令。
提示: |
---|
已删除的源记录:
如果 SetDeleted() 为 TRUE,VODBSort() 会将已删除的记录复制到目标数据库文件中;
但是,这些已删除的记录不会保留其删除状态。
无论源文件中的状态如何,目标文件中的记录都不会被标记为删除。
如果 SetDeleted() 为 FALSE,已删除的记录不会被复制到目标数据库文件中。
同样,在排序过程中会忽略经过过滤的记录,它们不会包含在目标
文件中。
|
示例
以下示例按两个字段(忽略大小写)对数据库进行排序,并将其用作
当前文件:
1IF DBSort("sortdb.dbf", {"Last/C", "First/C"})
2 DBCloseArea()
3 USE sortdb NEW
4ENDIF
参见