首页 百科知识 利用缓冲访问表中的数据

利用缓冲访问表中的数据

时间:2022-10-21 百科知识 版权反馈
【摘要】:数据缓冲是VFP在多用户环境下,用以保护对表记录所做的数据更新及数据维护操作的一种技术。一旦启用缓冲,则在它被废止或表被关闭之前一直保持有效。也称行缓冲,仅对表的一个记录开设缓冲区,当记录指针移动时或关闭表时,缓冲区将自动更新表中相应的记录。当对远程表使用记录或表缓冲时VFP强制执行开放式锁定。该函数返回值类型为数值型,表示放弃修改的记录数目。

3.3.4 利用缓冲访问表中的数据

一、数据缓冲

数据缓冲是VFP在多用户环境下,用以保护对表记录所做的数据更新及数据维护操作的一种技术。它为启用数据缓冲的表在内存中开辟一个缓冲区,对表的一个或多个记录的修改可以先保存在缓冲区中,用户可以决定是否将缓冲区中的数据更新表文件。

在更新表文件时,缓冲区自动测试、锁定以及解锁记录或表。一旦启用缓冲,则在它被废止或表被关闭之前一直保持有效。

二、数据缓冲的类型

缓冲的类型有两种:记录缓冲和表缓冲。

1.记录缓冲

也称行缓冲,仅对表的一个记录开设缓冲区,当记录指针移动时或关闭表时,缓冲区将自动更新表中相应的记录。如一次只对一个记录进行访问、修改或写操作,应选择记录缓冲。

2.表缓冲

对整张表实施缓冲,仅当发出更新表的命令或关闭表时更新表。如要对多个记录的更新使用缓冲,应选择表缓冲。

VFP以两种方式提供缓冲:保守式和开放式。

(1)保守式缓冲。在多用户环境中防止一个用户访问另一个用户正在修改的记录或表。它为修改记录提供了最安全的环境,但会减慢使用者的操作。

(2)开放式缓冲。这是一种高效的更新记录的方式。在这种方式下,记录只在被写入时加锁,减少了单个用户独占系统的时间。当对远程表使用记录或表缓冲时VFP强制执行开放式锁定。

三、设置表的数据缓冲

表有4种数据缓冲方式:保守式行缓冲、开放式行缓冲、保守式表缓冲和开放式表缓冲。另一种情况就是不设置缓冲。

1.通过界面方式设置表的数据缓冲

在界面操作方式下,是在“工作区属性”对话框中进行设置的。先选中“允许数据缓冲”复选框,然后在“锁定记录”区域中选定锁定方式,在“缓冲”区域中选择缓冲类型。

2.使用CURSORTSETPROP()函数设置数据缓冲

格式:

  CURSORTSETPROP(′Buffering′,缓冲类型值,[工作区|别名])

缓冲类型值及对应的缓冲方式如下:

1表示无缓冲(默认值),2表示保守式行缓冲,3表示开放式行缓冲,4表示保守式表缓冲,5表示开放式表缓冲。除了方式1以外,SET MULTILOCKS必须为ON。

为xs表设置保守式表缓冲:

SET MULTILOCKS ON

USE stu

=CURSORTSETPROP(′Buffering′,4)

四、检测缓冲区数据是否与数据源表一致

1.CURVAL()函数和OLDVAL()函数

CURVAL()函数从键盘上的表或远程数据源中直接返回字段值。OLDVAL()函数返回字段的初始值,该字段已被修改但还未更新。两个函数返回的字段值可以进行比较,以决定编辑字段时,网络中的其他用户是否改变了字段值。

当激活表示开放式行缓冲或表缓冲时,CURVAL()和OLDVAL()函数必须返回不同的值。

2.GETFLDSTATE()函数

返回一个数值,标明表或临时表中的字段是否已被编辑,是否有追加的记录或者指明当前记录的删除状态是否已更改。

五、执行和放弃对缓冲数据的修改

1.TABLEEUPDATE()

用TABLEUPDATE()函数执行对缓冲行、缓冲表或临时表的修改。该函数的返回值类型为逻辑型。

2.TABLEREVERT()

TABLEREVERT()函数放弃对缓冲行、缓冲表或临时表的修改。该函数返回值类型为数值型,表示放弃修改的记录数目。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈