点击或拖拽改变大小

Functions.RLock 方法 (String, __Usual)

X#
锁定当前记录。

命名空间:  XSharp.RT
程序集:  XSharp.RT (在 XSharp.RT.dll 中) 版本:2.22 GA
语法
 FUNCTION RLock(
	cRecordNumberList AS STRING,
	uArea AS USUAL
) AS LOGIC
查看代码

参数

cRecordNumberList
类型:String
指定 RLOCK( ) 尝试锁定多个记录。 字符表达式 cRecordNumberList 指定一个或多个记录编号,用逗号分隔,RLOCK( ) 尝试锁定。 例如,要尝试锁定表中的前四条记录,cRecordNumberList 应包含 1, 2, 3, 4。
uArea
类型:__Usual
指定要在其上执行操作的表的工作区名称或编号。

返回值

类型:Boolean
如果成功获得记录锁,则返回 TRUE;否则返回 FALSE。
如果尝试锁定多个记录且其中之一失败,则成功的锁将被释放。
在空数据库中尝试锁定记录返回 TRUE。
备注
如果数据库文件以共享模式打开,则在执行任何写入数据库文件的操作之前,必须获得记录锁。 对于 RLock() 的每次调用,都会尝试锁定目标记录,并返回结果作为逻辑值。
如果另一个进程当前对目标记录拥有文件锁或记录锁,则获取记录锁的尝试将失败。 如果 RLock() 成功,记录将被锁定,其他进程将在锁释放之前无法更新该记录。 RLock() 提供共享锁,允许其他用户对锁定记录进行只读访问,同时仅允许当前进程进行修改。 记录锁在您显式解锁(例如使用 DBUnLock())、关闭数据库文件或尝试另一个文件或记录锁(使用 RLock() 或 DBRLock() 而不带参数)之前保持有效。
默认情况下,此函数在当前选定的工作区上操作。
可以通过在别名表达式中指定或调用接受工作区参数(工作区编号或别名)的重载来使其在未选定的工作区上操作。
该功能很有用,因为 RLock() 不会自动尝试锁定相关文件。
示例
此示例使用 RLock() 删除共享数据库文件中的一条记录:
X#
 1USE customer INDEX custname SHARED NEW
 2SEEK "Smith"
 3IF Customer->Found()
 4    IF Customer->RLock()
 5        Customer->DBDelete()
 6        QOut("Smith 已删除")
 7    ELSE
 8        QOut("记录正在被其他人使用")
 9    ENDIF
10ELSE
11    QOut("Smith 不在客户文件中")
12ENDIF
13CLOSE
参见