Functions.DbSetOrderCondition 方法 | |
设置创建下一个排序时使用的条件和范围。
命名空间:
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
[ClipperCallingConventionAttribute(new string[] { ... })]
public static bool DbSetOrderCondition(
__Usual cForCondition = default,
__Usual cbForCondition = default,
__Usual lAll = default,
__Usual cbWhileCondition = default,
__Usual cbEval = default,
__Usual nInterval = default,
__Usual nStart = default,
__Usual nNext = default,
__Usual nRecord = default,
__Usual lRest = default,
__Usual lDescend = default,
__Usual lAdditive = default,
__Usual lCurrent = default,
__Usual lCustom = default,
__Usual lNoOptimize = default,
__Usual lBinary = default,
__Usual cCollation = default,
__Usual lCandidate = default,
__Usual lCompact = default
)
查看代码参数
- 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时指定范围为所有记录。
如果要指定其他记录范围条件(即nNext、nRecord或lRest),请使用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。
备注 提示: |
---|
nNext、nRecord 和 lRest 参数是互斥的。您不应同时传递这三个参数。
如果您传递 cbWhile 参数,那么它也会控制范围行为。
|
默认情况下,此函数在当前选定的工作区上操作。
可以通过在别名表达式中指定来使其在未选定的工作区上操作。
除非您使用DBSetOrderCondition()另行指定,否则您创建的新排序将使用默认范围规则,处理工作区中的所有记录。
DBSetOrderCondition()允许您指定记录必须满足的条件和范围规则,以便包含在下一个创建的排序中。
因此,创建新排序会自动将工作区重置为使用默认范围规则。
因此,如果需要范围设置,您必须在每次创建新排序时重新设置DBSetOrderCondition()。
如果您想使用DBCreateOrder()和DBCreateIndex()创建条件排序,此函数至关重要,因为这些函数不支持执行此操作的参数。
示例
以下示例设置创建排序的条件:
1LOCAL cFor AS STRING
2LOCAL lAll, lRest, lDescend AS LOGIC
3LOCAL cbForCondition, cbWhileCondition, cbEval AS USUAL
4LOCAL nStep, nStart, nNext, nRecord AS SHORTINT
5
6cFor := 'Upper(Name) = "MELISSA"'
7
8cbForCondition := {|| Upper(Name) = "MELISSA"}
9lAll := TRUE
10cbWhileCondition := {|| TRUE}
11cbEval := {|| Name + City}
12
13nStep := 0
14nStart := 0
15nNext := 0
16nRecord := 0
17lRest := FALSE
18lDescend := FALSE
参见 引用
SetOrderCondition(__Usual, __Usual, __Usual, __Usual, __Usual, __Usual, __Usual, __Usual, __Usual, __Usual, __Usual, __Usual, __Usual, __Usual, __Usual)