点击或拖拽改变大小

Functions.DbSetOrderCondition 方法

X#
设置创建下一个排序时使用的条件和范围。

命名空间:  XSharp.RT
程序集:  XSharp.RT (在 XSharp.RT.dll 中) 版本:2.22 GA
语法
 FUNCTION DbSetOrderCondition(
	cForCondition,
	cbForCondition,
	lAll,
	cbWhileCondition,
	cbEval,
	nInterval,
	nStart,
	nNext,
	nRecord,
	lRest,
	lDescend,
	lAdditive,
	lCurrent,
	lCustom,
	lNoOptimize,
	lBinary,
	cCollation,
	lCandidate,
	lCompact
) AS LOGIC CLIPPER
查看代码

参数

cForCondition (Optional)
类型:__Usual
指定排序的for条件的字符串。
此字符串由DBOrderInfo(DBOI_CONDITION, [cIndexFile], cOrder)返回。
如果不需要此信息,可以指定NULL_STRING。
cbForCondition (Optional)
类型:__Usual
定义条件(称为for条件)的代码块,范围内的每条记录必须满足该条件才能被处理。
如果记录不满足指定条件,则会被忽略并处理下一条记录。使用for条件时,重复的键值不会添加到索引文件中。
默认值为NIL。
此条件(而非cForCondition)是实际用于创建排序的条件。
与while条件和其他范围信息不同,for条件作为索引文件的一部分存储,并在使用DBReindex()更新或重建排序时使用。
for条件的任何限制由RDD决定。
lAll (Optional)
类型:__Usual
值为TRUE时指定范围为所有记录。
如果要指定其他记录范围条件(即nNextnRecordlRest),请使用FALSE。
默认值为FALSE。
cbWhileCondition (Optional)
类型:__Usual
定义每条记录必须满足的另一个条件的代码块。 一旦遇到导致条件失败的记录,操作就会终止。
如果未指定范围,cbWhileCondition 将默认范围更改为 lRest
您可以使用这三个互斥参数之一来定义范围。
默认为所有记录。

while条件仅用于创建排序。
它不存储在索引文件中,也不用于更新或重新索引。
默认值为NIL。
cbEval (Optional)
类型:__Usual
在由nInterval指定的间隔评估的代码块。
这对于生成状态栏或里程表以监视排序进度很有用。
cbEval的返回值必须是逻辑值。
如果cbEval返回FALSE,索引过程将停止。
默认值为NIL。
nInterval (Optional)
类型:__Usual
确定评估cbEval次数的数值表达式。
此参数通过以间隔而不是对每个处理的记录进行评估来提高性能。
要逐一处理每条记录,可以指定值为0。
默认值为0。
nStart (Optional)
类型:__Usual
起始记录号。
要从文件开头开始,请指定值为0。
默认值为0。
您可以使用这三个互斥参数之一定义范围(对其他参数使用0或FALSE)。
默认为所有记录。记录范围信息仅用于创建排序。
它不存储在索引文件中,也不用于索引更新和重新索引。
nNext (Optional)
类型:__Usual
nStart开始要处理的记录数。指定0以忽略此参数。
nRecord (Optional)
类型:__Usual
要处理的单个记录号。指定0以忽略此参数。
lRest (Optional)
类型:__Usual
TRUE仅处理从nStart到文件末尾的记录。FALSE处理所有记录。
lDescend (Optional)
类型:__Usual
指定键值对是按值的递减还是递增顺序排序。TRUE表示降序。FALSE表示升序。
默认值为FALSE。
lAdditive (Optional)
类型:__Usual
指定在创建新排序时是否保持打开的排序继续打开。TRUE表示应保持打开。FALSE表示应关闭所有打开的排序。
默认值为FALSE。
lCurrent (Optional)
类型:__Usual
指定是否仅包括控制排序中的记录(以及由OrdSetScope()指定的当前范围内的记录)。TRUE表示应使用控制排序和范围来限制新创建排序的范围。FALSE表示数据库文件中的所有记录都包括在排序中。
默认值为FALSE。
lCustom (Optional)
类型:__Usual
指定新排序是否为自定义构建的排序(适用于支持此功能的RDD)。TRUE表示将创建自定义构建的排序。
自定义构建的排序最初为空,使您可以完全控制排序维护。
系统不会自动从自定义构建的排序中添加和删除键。相反,您需要使用OrdKeyAdd()和OrdKeyDel()显式添加和删除键。FALSE表示标准的系统维护排序。
默认值为FALSE。
lNoOptimize (Optional)
类型:__Usual
指定是否优化FOR条件(适用于支持此功能的RDD)。TRUE优化FOR条件,FALSE不优化。
默认值为FALSE。
lBinary (Optional)
类型:__Usual
cCollation (Optional)
类型:__Usual
lCandidate (Optional)
类型:__Usual
lCompact (Optional)
类型:__Usual

返回值

类型:Boolean
如果成功则为TRUE;否则为FALSE。
备注
提示 提示:
nNextnRecordlRest 参数是互斥的。您不应同时传递这三个参数。 如果您传递 cbWhile 参数,那么它也会控制范围行为。
默认情况下,此函数在当前选定的工作区上操作。
可以通过在别名表达式中指定来使其在未选定的工作区上操作。
除非您使用DBSetOrderCondition()另行指定,否则您创建的新排序将使用默认范围规则,处理工作区中的所有记录。 DBSetOrderCondition()允许您指定记录必须满足的条件和范围规则,以便包含在下一个创建的排序中。 因此,创建新排序会自动将工作区重置为使用默认范围规则。 因此,如果需要范围设置,您必须在每次创建新排序时重新设置DBSetOrderCondition()。 如果您想使用DBCreateOrder()和DBCreateIndex()创建条件排序,此函数至关重要,因为这些函数不支持执行此操作的参数。
示例
以下示例设置创建排序的条件:
X#
 1LOCAL cFor AS STRING
 2LOCAL lAll, lRest, lDescend AS LOGIC
 3LOCAL cbForCondition, cbWhileCondition, cbEval AS USUAL
 4LOCAL nStep, nStart, nNext, nRecord AS SHORTINT
 5                            // For条件字符串格式
 6cFor := 'Upper(Name) = "MELISSA"'
 7                            // 实际For条件
 8cbForCondition := {|| Upper(Name) = "MELISSA"}
 9lAll := TRUE
10cbWhileCondition := {|| TRUE}        // While全部
11cbEval := {|| Name + City}        // 索引代码
12                            // 块
13nStep := 0                        // 逐一处理
14nStart := 0                        // 从顶部
15nNext := 0                        // 全部
16nRecord := 0                        // 所有记录
17lRest := FALSE                    // 全部
18lDescend :=  FALSE
参见