Functions.DbLocate 方法 | |
搜索匹配指定条件和范围的第一条记录。
命名空间:
XSharp.RT
程序集:
XSharp.RT (在 XSharp.RT.dll 中) 版本:2.22 GA
语法 FUNCTION DbLocate(
cbForCondition,
cbWhileCondition,
nNext,
nRecord,
lRest,
lNoOpt
) AS LOGIC CLIPPER
[ClipperCallingConventionAttribute(new string[] { ... })]
public static bool DbLocate(
__Usual cbForCondition = default,
__Usual cbWhileCondition = default,
__Usual nNext = default,
__Usual nRecord = default,
__Usual lRest = default,
__Usual lNoOpt = default
)
查看代码参数
- 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)优化(尚不支持)。
返回值
类型:
Boolean
如果成功则返回TRUE;否则返回FALSE。
备注 提示: |
---|
nNext、nRecord 和 lRest 参数是互斥的。您不应同时传递这三个参数。
如果您传递 cbWhile 参数,那么它也会控制范围行为。
|
默认情况下,此函数在当前选定的工作区上操作。
可以通过在别名表达式中指定来使其在未选定的工作区上操作。
DBLocate()是LOCATE命令的函数形式。
DBLocate()从范围的起始记录开始搜索。
当找到匹配项或达到范围末尾时终止。
如果成功,匹配的记录成为当前记录,Found()返回TRUE。
如果不成功,Found()返回FALSE,记录指针的位置取决于范围。
每个工作区可以有自己的定位条件。
该条件保持活动状态,直到在该工作区执行另一个定位条件或应用程序终止。
DBLocate()与DBContinue()配合使用。一旦发出DBLocate(),您可以使用DBContinue()从当前记录指针位置恢复搜索。
然而,有一些例外。范围和
cbWhileCondition仅适用于初始DBLocate()函数,对任何后续DBContinue()函数不起作用。
要继续带有范围或
cbWhileCondition的待定定位条件,请使用DBSkip();然后使用
lRest和
cbWhileCondition参数的DBLocate(),而不是DBContinue()。
示例
此示例按顺序搜索字符串:
1PROCEDURE Start()
2 DBUseArea(TRUE,, "sales")
3 DBLocate({||"Widget" == Sales->Name},,,-1)
4 IF Found()
5 QOut("我有一个小部件。")
6 ELSE
7 QOut("未找到。")
8 ENDIF
9 RETURN
参见