N
ntjrr
Unregistered / Unconfirmed
GUEST, unregistred user!
DELPHI+SQL2000 <br>datamoduleform.ADOConnection1.BeginTrans;<br>try<br>ADOQuery1.Close;<br>ADOQuery1.SQL.Clear;<br>ADOQuery1.SQL.Add('update 表一 set 单位=''dw'' where 1=2');<br>ADOQuery1.ExecSQL; //本处的执行是没有实质意义的,只是为了事务开始时对表一就加上U锁<br>ADOQuery2.Close;<br>ADOQuery2.SQL.Clear;<br>ADOQuery2.SQL.Add('select * from 表一 where id=:ypid');<br>ADOQuery2.Parameters.ParamByName('ypid').Value:=ypid;<br>ADOQuery2.Open;//从表一中取出所有字段的内容备用.<br>ADOQuery1.Close;<br>ADOQuery1.SQL.Clear;<br>ADOQuery1.SQL.Add('update 表一 set 数量=:sl,进价金额=:jjje where ID=:id' );<br>ADOQuery1.Parameters.ParamByName('sl').Value:=format('%.2f',[(ADOQuery2.FieldByName('数量').AsFloat-rksl)]);<br>ADOQuery1.Parameters.ParamByName('jjje').Value:=format('%.3f',[(ADOQuery2.FieldByName('进价').AsFloat)*(ADOQuery2.FieldByName('数量').AsFloat-rksl)]);<br>ADOQuery1.Parameters.ParamByName('id').Value:=ypid;<br>ADOQuery1.ExecSQL;<br>自我感觉好象写的复杂了一些,其实也就是要将当前表中的数量减去一个数量(rksl)而已<br>不知道如何改法比较效率高,并能考虑到多个用户同时使用时的数据并发问题,保证数量不修改错误.谢谢