所有栏目

事务处理实现远程表数据更新

作者:范文虾

当使用远程表中的数据时,事务处理只更新视图临时表的.本地备份,对远程基表的更新不起作用,使用SQLSETPROP启动人工事务,SQLROLLBAK()和SQLCOMMIT()控制事务处理。

在自定义类—TRANSACTION中增加方法远程表事务处理确认—RTRANS/confirm/i和取消(—RTRANSCANCEL)两种方法。同样共享数据的各个用户程序也使用行缓冲。

— RTRANSConFIRM 方法

LPARAMETERS hConnect &&连接句柄

SQLSETPROP(hConnect,'transmode',DB—TRANSMANUAL)

Isuccess=TABLEUPDATE(.T.,.F.)

&&非强制的更新所有修改记录

IF Isuccess=.F. &&若失败

oROLLBACK &&取消修改,结束事务1

o=AERROR(aErrors) &&取消事务出错

oDO CASE

CASE aErrors[1,1]=1585 &&当前记录被其他用户改过

=RLOCK() &&记录加锁

FOR nField=1 to FCOUNT()

&&依次处理每一字段

cField=FIELD(nField)

IF OLDVAL(cField)CURVAL(cField)

&&字段被改过,确认修改有效

DO CASE

oCASE TYPE(cField)='N'

oT1=CURVAL(cField)-LDVAL(cField)

oREPL cField WITH T1+eval(cField))

oOTHEWISE

oREPL cField WITH CURVAL(cField))

oENDCASE

ENDIF

ENDFOR

UNLOCK

=TABLEUPDATE(.T.,.T.) &&强制更新数据

热点导航
教育资讯 知道问答 公考资讯 司法考试 建筑知识 工作范文 大学排名 报考专业 学习方法 句子美文 秒知回答 作业解答 精选答案 知途问学