主题:你们的程序都使用“事务”吗?
x521516
[专家分:200] 发布于 2008-07-25 12:31:00
如题
回复列表 (共3个回复)
沙发
cbl518 [专家分:57140] 发布于 2008-07-26 07:24:00
应该在应用程序中,使用事务处理,
因为这样可以,
将整段代码放置到受保护、可恢复的事务单元中
提供对记录和表缓冲的保护。
但是,你必须要熟悉掌握和运用好,事务处理的过程。
板凳
wuzhouhong [专家分:10890] 发布于 2008-07-26 10:54:00
一段事务处理的程序
select BQRK
if flock()
m.errorHD = 0
On error m.errorHD=Error()
Begin transaction && 开始进行事务处理
Calculate Max(BQRK.voucher_no) to m.max_id for ContractID = m.nCID
Insert into BQRK (ContractID,voucher_no,occurdate,furnaceid,bundle,amount,weight,Made_by,Team_Shift) values ;
(m.nCID,m.max_id+1,m.dDate,m.c_Furnaceid,m.n_Bundle,m.n_Amount,m.n_weight,m.c_Made_by,m.cTeamCode)
*****************************
sum weight,bundle,amount to m.nLJSL_rk,m.nLJBS_rk,m.nLJZS_rk for ContractID=m.nCID && 统计累计入库量
sum weight,bundle,amount to m.nBQSL_rk,m.nBQBS_rk,m.nBQZS_rk for ContractID=m.nCID and !Flag_JZ && 统计当期入库包数、支数
Select BQTL
sum weight,bundle,amount to m.nLJSL_tl,m.nLJBS_tl,m.nLJZS_tl for ContractID=m.nCID && 统计累计投料量
sum weight,bundle,amount to m.nBQSL_tl,m.nBQBS_tl,m.nBQZS_tl for ContractID=m.nCID and !Flag_JZ && 统计当期投料包数、支数
*****************************
Update Cards set BQRK=m.nBQSL_rk , REMARKS=m.c_Remarks where ContractID=m.nCID && 更新数据库
if m.errorHD <> 0 && 如发生错误
rollback && 撤消数据操作
endif
end transaction && 事务处理结束
unlock
on error
else
messagebox("数据库正在被其他用户使用,请您稍后再提交任务!" , 48 , "系统提示")
endif
3 楼
zhaoyufei [专家分:550] 发布于 2008-07-26 13:46:00
这好像只用于VFP数据库,谁有后台数据是SQL-SERVER的事务处理经验?请不吝指教!
我来回复