VFP+SQLSERVER实例讲解6.docVIP

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
VFPSQLSERVER实例讲解6

VFP+SQL SERVER实例讲解6 [日期:2007-06-21] 来源:? 作者: [字体:大 中 小] )写入该数组,如果第5条记录也发生冲突,那么该数组将是一个一列两行的数组,cErrorArray[1]=4、cErrorArray[2]=5? 可选参数——lForce。默认为.F.,指:如果发生更新错误就确认更新错误,本函数返回.F.;如果设此参数为.t.,?表示发生更新错误时,以本客户端的新值为准,覆盖网络上被确认已经的其他用户的更新,如果覆盖成功,本函数返回.T.。 缺省表示本参数时取默认值。 该参数设为.T.的实质就是临时改变更新冲突的检测方式为“关键字段”,所以只要关键字不发生冲突,就不会发生更新冲突,本客户端的新值将覆盖其他用户做的变更。? 可选参数——nWorkAear|cTableAlias。表示实行TABLEUPDATE()的工作区,缺省表示对当前工作区有效。? 可选参数——cErrorArray。这是一个一列数组,且只有当必选参数nRows为2时有效,这时它记录着发生更新冲突的记录的记录号;如果没有发生任何更新冲突或是当必选参数nRows不为2时,本数组为一行一列,值为-1。? ? 举个例子:(假设使用“关键字段和已修改字段”作为更新冲突检测方案) USE?VCustomers CURSORSETPROP(Buffering,?5,?VCustomers) REPLACE?Phone?with?9999?next?4 *将第1、2、3、4、条记录的Phone改为9999 BROWSE *使用?sql?Server?的Query?Analyzer?制造更新冲突 *启动?SQL?Server?Query?Analyzer,登录Northwind?数据库 *输入如下语句并执行: update?customers?set?phone=00000?where?customerid=ANATR?or?customerid=ANTON 情况一:TABLEUPDATE(1,.F.,Vcustomers) *返回Visual?foxpro ?TABLEUPDATE(1,.F.,Vcustomers) *由于记录?2更新时发生冲突,函数返回.F. ?recno(Vcustomers) *指针停在第2条记录上 ?Aerror(err) 用Aerror函数取得Visual?FoxPro错误信息存入err数组中 ?err(1) *错误号:1585 ?err(2) *错误信息:“更新冲突” *回到SQL?Server?Query?Analyzer *输入如下语句并执行: select?customerid,phone?from?customers *您将看到:第一条记录Phone的值已经被Visual?FoxPro的客户端修改了,值是:9999。而后三条记录没有发生变化。说明Visual?FoxPro依次发送SQL描述到SQL?Server时,遇到更新错误就停止继续往下工作。 事实上,查看?SQL?Server?的?Profiler?工具也证明了以上论述: sp_executesql?NUPDATE?dbo.Customers?SET?Phone=@P1?WHERE?CustomerID=@P2?AND?Phone=@P3,?N@P1?nvarchar(24),@P2?varchar(50),@P3?nvarchar(24),?N9999?,?ALFKI,?Nbbbb? sp_executesql?NUPDATE?dbo.Customers?SET?Phone=@P1?WHERE?CustomerID=@P2?AND?Phone=@P3,?N@P1?nvarchar(24),@P2?varchar(50),@P3?nvarchar(24),?N9999?,?ANATR,?N1234?//此处发生更新错误,Visual?FoxPro停止往下工作 情况二:TABLEUPDATE(1,.T.,Vcustomers) *返回Visual?FoxPro ?TABLEUPDATE(1,.T.,Vcustomers) *函数返回.T. ?recno(Vcustomers) *指针停在第4条记录上 *回到SQL?Server?Query?Analyzer *输入如下语句并执行: select?customerid,phone?from?customers *您将看到:头四条记录Phone的值已经被Visual?FoxPro的客户端修改了,值是:9999。按理说第2条记录被更新时会发生冲突,但由于Visual?FoxPro临时变更了更新冲突的检测方案为“关键字段”,这样原本应该能检测到的冲突被忽略了,Visual?FoxPro客户端的

文档评论(0)

cgtk187 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档