点击或拖拽改变大小

Functions.VoDbEval 方法

X#
对匹配指定范围和/或条件的每条记录评估代码块。

命名空间:  XSharp.RT
程序集:  XSharp.RT (在 XSharp.RT.dll 中) 版本:2.22 GA
语法
 FUNCTION VoDbEval(
	cbExecute AS USUAL,
	cbForCondition AS USUAL,
	cbWhileCondition AS USUAL,
	nNext AS USUAL,
	nRecord AS USUAL,
	lRest AS LOGIC
) AS LOGIC
查看代码

参数

cbExecute
类型:__Usual
对匹配范围和条件的每条记录执行的代码块。
cbForCondition
类型:__Usual
定义范围内每条记录必须满足的条件的代码块,以便进行处理。
cbWhileCondition
类型:__Usual
定义每条记录必须满足的另一个条件的代码块,以便进行处理。 一旦遇到导致条件失败的记录,操作就会终止。
如果未指定范围,cbWhileCondition 会将默认范围更改为 lRest
您可以使用这三个互斥参数之一来定义范围。
默认是所有记录。
nNext
类型:__Usual
要处理的记录数,从 nRecord 开始。 指定 0 以忽略此参数。
nRecord
类型:__Usual
要处理的单个记录号。指定 0 以忽略此参数。
lRest
类型:Boolean
TRUE 仅处理从 nStart 到文件末尾的记录。 FALSE 处理所有记录。

返回值

类型:Boolean
如果成功则返回 TRUE;否则返回 FALSE。
备注
提示 提示:
nNextnRecordlRest 参数是互斥的。您不应同时传递这三个参数。 如果您传递 cbWhile 参数,那么它也会控制范围行为。
VODBEval() 类似于 DBEval(),但具有强类型特性。
然而,此函数不调用错误处理程序,因此不会在失败时产生运行时错误消息或创建错误对象。因此,检查返回值以确定函数是否成功可能很重要。
全局结构 StrucErrInfo 将包含有关发生的任何错误的必要信息。有关更多信息,请参见 DBEval()。
示例
此示例使用 VODBEval() 实现 Count() 函数,该函数计算工作区中匹配指定范围的记录数。
范围作为数组传递给 Count()。
一组常量定义了范围数组的元素:
X#
 1// 范围属性常量
 2DEFINE FOR_COND        :=    1    AS SHORTINT
 3DEFINE WHILE_COND        :=    2    AS SHORTINT
 4DEFINE NEXT_SCOPE        :=    3    AS SHORTINT
 5DEFINE REC_SCOPE        :=    4    AS SHORTINT
 6DEFINE REST_SCOPE        :=    5    AS SHORTINT
 7DEFINE SCOPE_ELEMENTS    :=    5    AS SHORTINT
 8FUNCTION Start()
 9    // 创建范围并使用它计数记录
10    LOCAL mySet[SCOPE_ELEMENTS]
11    LOCAL myCount AS LONGINT
12    USE customer NEW
13    mySet[FOR_COND] := {||customer = "Smith"}
14    mySet[WHILE_COND] := {||zip > "90000"}
15    mySet[REST_SCOPE] := FALSE
16    // 每条记录(ALL)
17    myCount := Count(mySet)
18    RETURN TRUE
19FUNCTION Count(aScope) AS LONGINT
20    LOCAL nCount := 0 AS LONGINT
21    VODBEval({|| nCount++},;
22        aScope[FOR_COND],;
23        aScope[WHILE_COND],;
24        aScope[NEXT_SCOPE],;
25        aScope[REC_SCOPE],;
26        aScope[REST_SCOPE])
27    RETURN nCount
参见