- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
cursorsetprop()函数用法
使用缓冲:
缺省情况下缓冲器是关闭的,这种情况下在更新表时vfp和foxpro 2.x是一样的,要使用缓冲你必需将它打开。缓冲适用于自由表及数据库中的表。要用缓冲还要set multilocks on,因为multilocks缺省值是off,如果你忘了设置其值为on,会出现错误信息。你可以把multilocks=on加入到config.fpw文件中,或是用"工具"栏下的"选项"功能保存其值为on。
我们通过cursorsetprop(‘buffering’,n,alias)来定义缓冲方式。如果是对当前表设置缓冲,不必定义alias,根据你想要的缓冲及锁定方式n为下列值:
缓冲及锁定法:
n值:
无缓冲1保守式行缓冲2开放式行缓冲3保守式表缓冲4开放式表缓冲5
例如,要将当前表设置为开放式行缓冲,用cursorsetprop(‘buffering’,3),要取得当前正打开的表的缓冲方式,用cursorgetprop(‘buffering’)。要设置一个表单的缓冲方式,你可以在表单的load事件中用cursorsetprop()定义所有用到的表,但最好的方法是直接设置表单的buffermode属性来决定是开放式还是保守式(缺省值为"无"),这样设置后,该表单就会自动对绑定到网格(grid)中的表使用表缓冲,对其它表则使用行缓冲。如果你的表单使用了数据环境,你可以对某一个表的buffermodeoverride属性按你的意图设置缓冲,以取代表单的buffermode属性。如果有用户正在修改缓冲记录中的数据(此时用户处在"编辑"状态),你不仅可以取得他们输入到每个字段中的值,还能取得每个字段的初始值和当前值(此值为磁盘中的实际值),为此vfp提供了oldval()和curval()函数。 要得到: 使用: 用户输入值(缓冲的数据)fieldname or alias.fieldname用户未做任何改动之前的值oldval(‘fieldname’)当前记录中的值curval(‘fieldname’)注: curval()和oldval()仅用于开放式缓冲。你可能搞不懂curval()返回值和oldval()返回值有什么不同,如果是在单用户程序中,二者之间是没什么区别,但是如果是在网络中,在开放式锁定下,很可能在本用户编辑一条记录时,另一个用户也编辑同一条记录,并在本用户"保存"之前进行了"保存",下面是一个例子:郑某将contacts.dbf指针定位到第2条记录,并点击了"编辑"按钮: 字段 缓冲值 初始值oldval() 当前值curval() 姓名 李达 李达 李达 公司名称 狐友技术开发公司 狐友技术开发公司 狐友技术开发公司 然后,郑某将公司名称改为"狐友俱乐部",但还没有保存记录: 字段 缓冲值 初始值oldval() 当前值curval() 姓名 李达 李达 李达 公司名称 狐友俱乐部 狐友技术开发公司 狐友技术开发公司 就在此时,于某也将contacts.dbf指针定位到第2条记录,并点击了"编辑"按钮,他改变了公司名称为"猎狐者俱乐部",并保存。此时在郑某的机器上会看到如下结果: 字段 缓冲值 初始值oldval() 当前值curval() 姓名 李达 李达 李达 公司名称 狐友俱乐部 狐友技术开发公司 猎狐者俱乐部 注意:在上表中contacts.公司名称、oldval(‘公司名称’)以及curval(‘公司名称’)将返回不同的值。访问记录中各字段的初始值、缓冲值和当前值,你可以:l 通过比较缓冲值和初始值来确定哪些字段被用户修改了;l 通过比较初始值和当前值来检测在开始编辑后,网络中是否有其它用户修改了同一条记录。 如果你不关心初始值和当前值,而只是希望检测到某个字段中的内容是否被修改过,可以用getfldstate()函数。这个函数返回一个数值,指出当前记录是否被做了修改。getfldstate()按以下格式调用:getfldstate( fieldname | fieldnumber [ , alias | workarea ] )返回值及其意义如下表所示: 返回值意义1没改变2字段被编辑或者记录的删除标记被改变3添加了一条新记录但没编辑字段,以及记录的删除记录未改变4添加了一条新记录并编辑了字段,或者记录的删除标记被改变记录的删除标记被改变,是指删除记录或恢复(recall)记录。值得注意的是:对记录删除后又马上进行了恢复,尽管对记录来说没影响,但是其删除标记
文档评论(0)