VFP+SQLSERVER实例讲解6.doc_第1页
VFP+SQLSERVER实例讲解6.doc_第2页
VFP+SQLSERVER实例讲解6.doc_第3页
VFP+SQLSERVER实例讲解6.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

VFP+SQL SERVER实例讲解6日期:2007-06-21来源: 作者:字体:大 中 小 )写入该数组,如果第5条记录也发生冲突,那么该数组将是一个一列两行的数组,cErrorArray1=4、cErrorArray2=5 可选参数lForce。默认为.F.,指:如果发生更新错误就确认更新错误,本函数返回.F.;如果设此参数为.t.,表示发生更新错误时,以本客户端的新值为准,覆盖网络上被确认已经的其他用户的更新,如果覆盖成功,本函数返回.T.。 缺省表示本参数时取默认值。该参数设为.T.的实质就是临时改变更新冲突的检测方式为“关键字段”,所以只要关键字不发生冲突,就不会发生更新冲突,本客户端的新值将覆盖其他用户做的变更。可选参数nWorkAear|cTableAlias。表示实行TABLEUPDATE()的工作区,缺省表示对当前工作区有效。可选参数cErrorArray。这是一个一列数组,且只有当必选参数nRows为2时有效,这时它记录着发生更新冲突的记录的记录号;如果没有发生任何更新冲突或是当必选参数nRows不为2时,本数组为一行一列,值为-1。举个例子:(假设使用“关键字段和已修改字段”作为更新冲突检测方案)USEVCustomersCURSORSETPROP(Buffering,5,VCustomers)REPLACEPhonewith9999next4*将第1、2、3、4、条记录的Phone改为9999BROWSE*使用sqlServer的QueryAnalyzer制造更新冲突*启动SQLServerQueryAnalyzer,登录Northwind数据库*输入如下语句并执行:updatecustomerssetphone=00000wherecustomerid=ANATRorcustomerid=ANTON情况一:TABLEUPDATE(1,.F.,Vcustomers)*返回Visualfoxpro?TABLEUPDATE(1,.F.,Vcustomers)*由于记录2更新时发生冲突,函数返回.F.?recno(Vcustomers)*指针停在第2条记录上?Aerror(err)用Aerror函数取得VisualFoxPro错误信息存入err数组中?err(1)*错误号:1585?err(2)*错误信息:“更新冲突”*回到SQLServerQueryAnalyzer*输入如下语句并执行:selectcustomerid,phonefromcustomers*您将看到:第一条记录Phone的值已经被VisualFoxPro的客户端修改了,值是:9999。而后三条记录没有发生变化。说明VisualFoxPro依次发送SQL描述到SQLServer时,遇到更新错误就停止继续往下工作。事实上,查看SQLServer的Profiler工具也证明了以上论述:sp_executesqlNUPDATEdbo.CustomersSETPhone=P1WHERECustomerID=P2ANDPhone=P3,NP1nvarchar(24),P2varchar(50),P3nvarchar(24),N9999,ALFKI,Nbbbbsp_executesqlNUPDATEdbo.CustomersSETPhone=P1WHERECustomerID=P2ANDPhone=P3,NP1nvarchar(24),P2varchar(50),P3nvarchar(24),N9999,ANATR,N1234/此处发生更新错误,VisualFoxPro停止往下工作情况二:TABLEUPDATE(1,.T.,Vcustomers)*返回VisualFoxPro?TABLEUPDATE(1,.T.,Vcustomers)*函数返回.T.?recno(Vcustomers)*指针停在第4条记录上*回到SQLServerQueryAnalyzer*输入如下语句并执行:selectcustomerid,phonefromcustomers*您将看到:头四条记录Phone的值已经被VisualFoxPro的客户端修改了,值是:9999。按理说第2条记录被更新时会发生冲突,但由于VisualFoxPro临时变更了更新冲突的检测方案为“关键字段”,这样原本应该能检测到的冲突被忽略了,VisualFoxPro客户端的新值强行覆盖其它客户端的修改。事实上,查看SQLServer的Profiler工具也证明了以上论述:sp_executesqlNUPDATEdbo.CustomersSETPhone=P1WHERECustomerID=P2,NP1nvarchar(24),P2varchar(50),N9999,ALFKIsp_executesqlNUPDATEdbo.CustomersSETPhone=P1WHERECustomerID=P2,NP1nvarchar(24),P2varchar(50),N9999,ANATRsp_executesqlNUPDATEdbo.CustomersSETPhone=P1WHERECustomerID=P2,NP1nvarchar(24),P2varchar(50),N9999,ANTONsp_executesqlNUPDATEdbo.CustomersSETPhone=P1WHERECustomerID=P2,NP1nvarchar(24),P2varchar(50),N9999,AROUT情况三:TABLEUPDATE(2,.F.,Vcustomers,Arry)*返回VisualFoxPro?TABLEUPDATE(2,.F.,Vcustomers,Arry)*参数nRows设为2,即使记录2、3发生更新冲突,VisualFoxPro仍然继续往下执行,但参数函数返回.F.?recno(Vcustomers)*指针停在第4条记录上?Aerror(err)用Aerror函数取得VisualFoxPro错误信息存入err数组中?err(1)*错误号:1585?err(2)*错误信息:“更新冲突”?Arry1*2?Arry2*3*Arry返回发生更新错误的记录号*回到SQLServerQueryAnalyzer*输入如下语句并执行:selectcustomerid,phonefromcustomers*您将看到:第一条、第四条记录Phone的值已经被VisualFoxPro的客户端修改了,值是:9999。而第二条、第三条记录没有发生变化。说明VisualFoxPro依次发送SQL描述到SQLServer时,遇到更新冲突忽略之,继续往下工作。事实上,查看SQLServer的Profiler工具也证明了以上论述:sp_executesqlNUPDATEdbo.CustomersSETPhone=P1WHERECustomerID=P2ANDPhone=P3,NP1nvarchar(24),P2varchar(50),P3nvarchar(24),N9999,ALFKI,Nccccsp_executesqlNUPDATEdbo.CustomersSETPhone=P1WHERECustomerID=P2ANDPhone=P3,NP1nvarchar(24),P2varchar(50),P3nvarchar(24),N9999,ANATR,Ncccc/发生更新冲突,VisualFoxPro继续往下执行sp_executesqlNUPDATEdbo.CustomersSETPhone=P1WHERECustomerID=P2ANDPhone=P3,NP1nvarchar(24),P2varchar(50),P3nvarchar(24),N9999,ANTON,Ncccc/发生更新冲突,VisualFoxPro继续往下执行sp_executesqlNUPDATEdbo.CustomersSETPhone=P1WHERECustomerID=P2ANDPhone=P3,NP1nvarchar(24),P2varchar(50),P3nvarchar(24),N9999,AROUT,Ncccc情况四:TABLEUPDATE(2,.T.,Vcust

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论