像PB等操作数据库时,都可以先进行更改,然后将用户的更改更新到数据库中,但delphi中却是修改一条,更新一条,有没有什么方法可以实现类似PB中操作数据库的工能?(我太笨了,分不多,见谅)

解决方案 »

  1.   

    事务 transactionADOConnection1.BeginTrans;
    try
      //批量修改
      ADOConnection1.CommitTrans;
    except
      ADOConnection1.RollbackTrans;
    end;//end of try
      

  2.   


    AdoQuery1.LockType:=ltBatchOptimistic;
    //......修改,添加
    adoQuery1.UpdateBatch;  //批量提交
      

  3.   

    要么像楼上的,要么可以直接用sql批量更新
      

  4.   

    我想我的意思是用户在象DBGRID这样的组件上直接修改,但不是实时更新到数据库中,而是当用户按下保存按钮后,用户更新的所有数据才保存到数据库中。
      

  5.   

    “我想我的意思是用户在象DBGRID这样的组件上直接修改,但不是实时更新到数据库中,而是当用户按下保存按钮后,用户更新的所有数据才保存到数据库中。

    试试用事务应该可以的
      

  6.   

    在帮助里看看LockType;设置ltBatchOptimistic时才会批量提交,就是数据集使用UpdateBatch方法的时候,数据才会提交到SERVER上,否则修改无效
      

  7.   

    你的意思大家明白,不过你没有明白大家的意思,事务的作用就是把修改的多条数据批量保存或更新到数据库中:
    ADOConnection1.BeginTrans;
    try
      ......
      ADOConnection1.CommitTrans;
    except
      ADOConnection1.RollbackTrans;
    end
      

  8.   

    jianke5555(汐)的意思是不是可以这样做:
    打开数据修改界面--开始事务--用户修改数据--用户点击保存按钮--提交事务或回滚。
    对吗?
    我试试。
    谢先。
      

  9.   

    另:
    使用adoquery时如使用adoconnection的事务处理,是否需要同时将locktype设置为ltBatchOptimistic??
      

  10.   

    直接使用,例如:
      ADOQuery1.Connection := ADOConnection1;
      ADOQuery2.Connection := ADOConnection1;
      ADOConnection1.BeginTrans;
      try
        //可以同时用 ADOQuery1 和 ADOQuery2 修改数据库
        ADOConnection1.CommitTrans;
      except
        ADOConnection1.RollbackTrans;
      end;
      

  11.   

    我想我的意思是用户在象DBGRID这样的组件上直接修改,但不是实时更新到数据库中,而是当用户按下保存按钮后,用户更新的所有数据才保存到数据库中。/////////////////////////////////////////////////////AdoQuery1.LockType:=ltBatchOptimistic;
    //......修改,添加
    try
        adoQuery1.UpdateBatch;  //批量提交
    except
        adoQuery1.CancelBatch;
    end;只操纵一个表用不着事务处理.
      

  12.   

    楼上大大们的代码你可以分开用,就可以满足你的要求。
    比如,在查询按钮里,查询出结果后,加上AdoQuery1.LockType:=ltBatchOptimistic;
    客户修改完,点击提交按钮的时候,就写下面的代码:
    try
    adoQuery1.UpdateBatch; //批量提交
    except
    adoQuery1.CancelBatch;
    end;
    要我做,在二层中我更愿意用TBDEClientDataSet,open,修改完后,在提交按钮里直接tbdeclientdataset.applyupdates(0)即可
      

  13.   

    可以用事物,也可以用好象叫updatesql这样的控件,修改后需要applyupdate才写硬盘