大家好,问一个关于事务处理的问题!     情况是这样,我在DELPHI中分别要往两个表中插入数据,我用了两个adoquery.apend 和adoquery.post    第一个post我只要插入一条记录,可是第二个post我要用一个for语句循环插入几条记录,所以我不能把他们放到一起处理,
   因为两个post是异步插入的,所以我担心当处理完第一个以后要是出现网络等问题,那我的第二个插入就不会处理,所以想问一下各位大侠,怎样把他们作为一个事务处理,谢谢    

解决方案 »

  1.   

     with jieshuan_dir do
      begin
            active:=true ;         for j:=1 to m do
         begin
                     append;
               FieldValues['bill_id']:= bill_no.Text;
               FieldValues['dt_sell']:= dateend.DateTime;
              
         try
              post;
                except
                   showMessage('保存操作失败,重启程序后,再出本提示,请联系系统管理员');
                     exit;
                 end;     end;
       end;  with jieshuan do
      begin
            active:=true ;        append  ;
             FieldValues['bill_id']:= bill_no.Text;
             FieldValues['n_staff_id']:=edit2.Text;
             FieldValues['str_operate_code']:=leixing;
                 try
              post;
                except
                   showMessage('保存操作失败,重启程序后,再出本提示,请联系系统管理员');
                     exit;
                 end;
             showMessage('保存单据成功');
        end;
      

  2.   

    调用TADOConnection的BeginTrans(事务开始)、CommitTrans(提交)、RollbackTrans(回滚)
      

  3.   

    同意:调用TADOConnection的BeginTrans(事务开始)、CommitTrans(提交)、RollbackTrans(回滚)
      

  4.   

    ADOQuery.Connection.BeginTrans;
    try
      dosomething;
      ADOQuery.Connection.CommitTrans;
    except
    ADOQuery.Connection.RollbackTrans;
    end;
      

  5.   

    ADOQuery.Connection.BeginTrans; 
    try 
        dosomething; 
        ADOQuery.Connection.CommitTrans; 
    except 
    ADOQuery.Connection.RollbackTrans; 
    end; 
      

  6.   

      问题是我有两个插入语句,是否都放到ADOQuery.Connection.BeginTrans;   ADOQuery.Connection.CommitTrans; 里面,如果一个没执行就都不会执行?