- 相關(guān)推薦
事務(wù)處理實現(xiàn)遠(yuǎn)程表的數(shù)據(jù)更新
事務(wù)處理實現(xiàn)遠(yuǎn)程表的數(shù)據(jù)更新
當(dāng)使用遠(yuǎn)程表中的數(shù)據(jù)時,事務(wù)處理只更新視圖臨時表的本地備份,對遠(yuǎn)程基表的更新不起作用。使用SQLSETPROP()啟動人工事務(wù),SQLROLLBAK()和SQLCOMMIT()控制事務(wù)處理。
在自定義類—TRANSACTION中增加方法遠(yuǎn)程表事務(wù)處理確認(rèn)—RTRANSCONFIRM和取消(—RTRANSCANCEL)兩種方法。同樣共享數(shù)據(jù)的各個用戶程序也使用行緩沖。
— RTRANSCONFIRM 方法
LPARAMETERS hConnect &&連接句柄
SQLSETPROP(hConnect,'transmode',DB—TRANSMANUAL)
Isuccess=TABLEUPDATE(.T.,.F.)
&&非強制的更新所有修改記錄
IF Isuccess=.F. &&若失敗
oROLLBACK &&取消修改,結(jié)束事務(wù)1
o=AERROR(aErrors) &&取消事務(wù)出錯
oDO CASE
CASE aErrors[1,1]=1585 &&當(dāng)前記錄被其他用戶改過
=RLOCK() &&記錄加鎖
FOR nField=1 to FCOUNT()
&&依次處理每一字段
cField=FIELD(nField)
IF OLDVAL(cField)<>CURVAL(cField)
&&字段被改過,確認(rèn)修改有效
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.) &&強制更新數(shù)據(jù)
SQLCOMMIT(hConnect) &&提交事務(wù)
ENDCASE
oELSE
oSQLCOMMIT(hConnect) &&提交事務(wù)
oENDIF
o— RTRANSCANCEL 方法
LPARAMETERS hConnect &&連接句柄
oSQLSETPROP(hConnect,'transmode',DB—TRANSMANUAL)
oISuccess=TABLEUPDATE(.T.,.F.)
o&&非強制的更新所有修改記錄
oIF Isuccess=.F. &&若失敗
ROLLBACK &&取消修改,結(jié)束事務(wù)1
=AERROR(aErrors) &&取消事務(wù)出錯
DO CASE
oCASE aErrors[1,1]=1585 &&當(dāng)前記錄被其他用戶改過
o =RLOCK() &&記錄加鎖
oFOR nField=1 to FCOUNT()
o&&依次處理每一字段
ocField=FIELD(nField)
oIF OLDVAL(cField)<>CURVAL(cField)
&&字段被改過,確認(rèn)修改無效,恢復(fù)原記錄
=TABLEREVERT(.F.)
UNLOCK
ENDIF
ENDFOR
=TABLEUPDATE(.T.,.T.) &&強制更新數(shù)據(jù)
SQLCOMMIT(hConnect) &&提交事務(wù)
ENDCASE
oELSE
oSQLCOMMIT(hConnect) &&提交事務(wù)
oENDIF
【事務(wù)處理實現(xiàn)遠(yuǎn)程表的數(shù)據(jù)更新】相關(guān)文章:
Excel實現(xiàn)隔多列數(shù)據(jù)求和教程10-19
Excel中數(shù)據(jù)要雙擊單元格能更新數(shù)據(jù)問題的解決方法08-09
sqlplus如何訪問遠(yuǎn)程oracle數(shù)據(jù)庫06-04
構(gòu)筑企業(yè)數(shù)據(jù)中心 實現(xiàn)理性分析決策06-04
公司事務(wù)處理委托書通用06-01
更新心情說說12-16
顯卡驅(qū)動怎么更新06-21
新經(jīng)典語錄更新12-27
更新管理制度04-11