ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('insert into Diary (diarydate,synopsis,content) ');
ADOQuery1.SQL.Add('values (:diarydate,:synopsis,:content)');
ADOQuery1.Parameters.ParamByName('diarydate').value:=DateTimePicker1.datetime;
ADOQuery1.parameters.ParamByName('synopsis').value:=Edit2.Text;
ADOQuery1.Parameters.ParamByName('content').value:=MeMo1.Text;这是一个插入语句,平时没有什么问题。一旦插入同样一条记录则产生错误,这时要产生回滚,请问后面语句怎么写?
谢谢各位兄弟

解决方案 »

  1.   

    加個 ADOConnection1
    ADOQuery1 邊接到ADOConnection1
    由 ADOConnection1處理事務 ADOConnection1.BeginTrans;
     ADOConnection1.CommitTrans;
     ADOConnection1.RollbackTrans;
      

  2.   

    adoquery1.Connection.BeginTrans;try
    adoquery1.execSQL;
    adoquery1.Connection.CommitTrans;
    except
    adoquery1.Connection.RollbackTrans;end;
      

  3.   

    ADOQuery1.Close;
    ADOQuery1.SQL.Clear;
    ADOQueyr1.SQL.Add('Begin Tran ');
    ADOQuery1.SQL.Add('insert into Diary (diarydate,synopsis,content) ');
    ADOQuery1.SQL.Add('values (:diarydate,:synopsis,:content)');
    ADOQuery1.Parameters.ParamByName('diarydate').value:=DateTimePicker1.datetime;
    ADOQuery1.parameters.ParamByName('synopsis').value:=Edit2.Text;
    ADOQuery1.Parameters.ParamByName('content').value:=MeMo1.Text;
    ADOQuery1.SQL.Add(' Commit Tran');
      

  4.   

    adoquery1.Connection.BeginTrans;try
    adoquery1.execSQL;
    adoquery1.Connection.CommitTrans;
    except
    adoquery1.Connection.RollbackTrans;end;
    就用这个
      

  5.   

    ADOConnection1.BeginTrans;事务开始
    ADOConnection1.CommitTrans;事务提交
    ADOConnection1.RollbackTrans;事务的回滚
    一般事务是用于两个以上的表时或者用于多次提交也就是说防止当第一个表数据提交以后第二个表提交不成功时用事务回滚.就可以撒消第一个表提交的资料
    这样有效的可以解决完整完了
    用到了事务就相当于一个原子如果一成功了就都成功了/如果不成功就都不成功
    我看你是只有一条记录插入就没有必要用到事务只用
    try
       ///你的语句
    except
      adoquery1.cancel;
    end;
    这样就可以了
      

  6.   

    同意
        aiirii(ari-爱的眼睛)的看法!
      

  7.   

    同意
        aiirii(ari-爱的眼睛)的看法!
      

  8.   

    如果有几条动作呢?
    比如:
       add(select * from indiv);
            
         add(insert.....);
    这又该怎么办呢?
      

  9.   

    adoconnection.begintrans
    try
      ....
      adoconnection.committrans;
    except
      adocoonection.rollbacktrans;
    end
      

  10.   

    主从表的更新才用事务 一般都用try就行