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()函数放弃对缓冲行、缓冲表或临时表的修改。该函数返回值类型为数值型,表示放弃修改的记录数目。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。