起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 202|回复: 5

[请求]关于事务 急!

[复制链接]
发表于 2009-7-16 13:52:43 | 显示全部楼层 |阅读模式
对表中的数据放到界面更改后再保存到数据库中.
现在又一个问题是:
假如我更改了第一条数据,并且保存后要求同时更新与本条记录相关联的记录,现在的做法是先保存,再在SAVEACTION事件中调用存储过程来更改.假如保存成功,在调用存储过程的时候不成功,是不是会造成数据库数据不正确呢!

急!!
回复

使用道具 举报

发表于 2009-7-16 13:57:51 | 显示全部楼层
会有这个风险。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-7-16 14:00:16 | 显示全部楼层
我现在想把保存代码和存储过程放到一个事务里面处理.不知这样写对不对!
procedure TACT_CST.Button1Click(Sender: TObject);
var
   lHandle: TTransactionHandle;
begin
   lHandle := DataSetBrokerBF_ACT_CST.Connection.Transaction.Start(True);
   try
      DataSetBrokerBF_ACT_CST.DataSet.First;
      while not DataSetBrokerBF_ACT_CST.DataSet.Eof do
      begin
         DataSetBrokerBF_ACT_CST.DataSet.Edit;
         DataSetBrokerBF_ACT_CST.DataSet.FieldByName('A_STD_RM_CST').AsString:=sA_STD_RM_CST;

         Query.Close;
         Query.CommandText:='update BF_ACT_CST A set  ';
         Query.Execute;

         DataSetBrokerBF_ACT_CST.DataSet.Post;
         DataSetBrokerBF_ACT_CST.DataSet.Next;
      end;

      StoredProc.Params.ParamByName('s_PROD').AsString :=DataSetBrokerBF_ACT_CST.DataSet.FieldByName('PROD').AsString;
      StoredProc.Params.ParamByName('n_BONUS_IN').AsString :=DataSetBrokerBF_ACT_CST.DataSet.FieldByName('BONUS_IN').AsString;
      StoredProc.Params.ParamByName('s_LOT').AsString :=DataSetBrokerBF_ACT_CST.DataSet.FieldByName('LOT').AsString;
      StoredProc.Params.ParamByName('mark1').AsInteger :=mark1;
      StoredProc.Params.ParamByName('mark2').AsInteger :=mark2;
      StoredProc.Params.ParamByName('mark3').AsInteger :=mark3;
      StoredProc.Params.ParamByName('mark4').AsInteger :=mark4;
      StoredProc.Params.ParamByName('mark5').AsInteger :=mark5;
      StoredProc.Execute;

      DataSetBrokerBF_ACT_CST.Connection.Transaction.Commit(lHandle);
   except
      DataSetBrokerBF_ACT_CST.Connection.Transaction.RollBack(lHandle);
   end;

end;
回复 支持 反对

使用道具 举报

发表于 2009-7-16 14:03:50 | 显示全部楼层
这样也不行。存储过程是独立出来的。
http://topic.csdn.net/t/20020723/18/896448.html
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-7-16 14:05:08 | 显示全部楼层
你帮我贴一下,我这里上不了CSDN.谢谢!
回复 支持 反对

使用道具 举报

发表于 2009-7-16 14:29:48 | 显示全部楼层
把你增加数据的部分也写到存储过程中。 存储过程的事物和程序的事物是独立的,不关联的。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-18 23:28 , Processed in 0.041559 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表