- 1、本文档共4页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
VFPSQLSERVER实例讲解7
VFP+SQL SERVER实例讲解7
[日期:2007-06-21] 来源:? 作者: [字体:大 中 小] sp;from?customers*您将看到:所有记录Phone的值已经被Visual?foxpro的客户端修改了,值是:9999。按理说第2条、第3条记录被更新时会发生冲突,但由于Visual?FoxPro临时变更了更新冲突的检测方案为“关键字段”,这样原本应该能检测到的冲突被忽略了,Visual?FoxPro客户端的新值强行覆盖其它客户端的修改。 事实上,查看?sql?Server?的?Profiler?工具也证明了以上论述:sp_executesql?NUPDATE?dbo.Customers?SET?Phone=@P1?WHERE?CustomerID=@P2,?N@P1?nvarchar(24),@P2?varchar(50),?N9999?,?ALFKIsp_executesql?NUPDATE?dbo.Customers?SET?Phone=@P1?WHERE?CustomerID=@P2,?N@P1?nvarchar(24),@P2?varchar(50),?N9999?,?ANATRsp_executesql?NUPDATE?dbo.Customers?SET?Phone=@P1?WHERE?CustomerID=@P2,?N@P1?nvarchar(24),@P2?varchar(50),?N9999?,?ANTONsp_executesql?NUPDATE?dbo.Customers?SET?Phone=@P1?WHERE?CustomerID=@P2,?N@P1?nvarchar(24),@P2?varchar(50),?N9999?,?AROUT
放弃更新
如果要“放弃客户端对光标已经实施的变动”,该怎么办呢?这很简单,请使用TABLEREVERT()函数。这里有一个概念很重要:任何情况下执行本函数均不都会与远程数据源发生通讯,Visual?FoxPro只是从缓冲中把原先的数值取回填写入光标中。
那么Visual?FoxPro是怎样从缓冲中取回数据的呢?您可以用OLDVAL()函数得到相同的效果,它的用法这里暂不介绍!
在开放式行缓冲下使用TABLEREVERT()函数:
语法:TABLEUPDATE(.f.[,nWorkAear|cTableAlias])?
返回值:1。如果当前记录没有被修改,则返回0。?
可选参数——nWorkAear|cTableAlias。表示实行TABLEREVERT()的工作区,缺省表示对当前工作区有效。?
?
例如:
USE?VCustomersCURSORSETPROP(Buffering,?3,?VCustomers)REPLACE?Phone?with?9999??VCustomer.phone*9999?TABLEREVERT(.F.,VCustomers)*返回1?VCustomer.phone*123456
USE?VCustomersCURSORSETPROP(Buffering,?3,?VCustomers)?TABLEREVERT(.F.,VCustomers)*返回0
在开放式表缓冲下使用TABLEREVERT()函数:
语法:TABLEUPDATE(lAllRows[,nWorkAear|cTableAlias])?
返回值:放弃更新的记录数目?
必选参数——lAllRows。默认值为.F.,表示对当前记录放弃更新;本参数设定为?.T.,放弃更新所有被修改过的记录。?
可选参数——nWorkAear|cTableAlias。表示实行TABLEREVERT()的工作区,缺省表示对当前工作区有效。?
?
USE?VCustomersCURSORSETPROP(Buffering,?5,?VCustomers)REPLACE?Phone?with?9999?next?4*将第1、2、3、4、条记录的Phone改为9999BROWSEgo?2?TABLEREVERT(.F.,VCustomers)*1?TABLEREVERT(.T.,VCustomers)*3
刷新缓冲(refreshing?buffers)
记得在“以缓冲理解更新冲突”一节中我们提到过什么情况下Visual?FoxPro会刷新缓冲区。其中“远程视图光标被打开”是很好的理解,这里不再累述。
以?REQUERY()函数刷新远程视图光标
REQUERY()函数的作用就是重新执行远程视图的SELECT-SQL描述,也就是重新打开远程视图光标,所以对系统造成较大的负担。对于这个函数,我有几点建议:
执行成功,返回:1;反之
文档评论(0)