现在有一个dbgrid,从数据库里面显示了几行数据,现在我用一个删除按钮,点击删除按钮就删除选中的那一行数据,还有一个保存按钮和一个取消按钮,如果不点保存,点取消退出窗体,那么,我开始点的那一行数据还要在数据库里,我应该怎么样做.
请教各位大侠,小弟先谢谢了.
如果上面说得不清楚,请看下面的链接.问题如下面链接所示
http://bsmqu.51.net

解决方案 »

  1.   

    不用数据感知控件来完成数据的显示,如listview,在listview中删除数据,直到退出窗体后才真正在数据库里删除数据即可。
      

  2.   

    如果是ClientDataSet,不ApplyUpdate
    如果是BDE,设为BatchUpdate(应该是这个吧),不要ApplyUpdate
    如果是ADO,也有一个相应的属性。
      

  3.   

    >>现在我用一个删除按钮,点击删除按钮就删除选中的那一行数据
    DbGrid1.DataSource.Dataset.delete;
      

  4.   

    我不知你用的是ADO,还是BDE
    我就拿ADO为例:
      adoquery.cancel;就可以了
      

  5.   

    我是用的adoquery直接连的数据库,没有用adoconncetion,也没有adodataset
      

  6.   

    你也可以用dbgrid1.selectedindex进行操作啊
      

  7.   

    那用dbgrid1.selectedindex应该怎么操作,
    我现在还只是一个菜鸟,请写一句两句的提示一下.谢谢了
      

  8.   

    请问用adoquery1.cancel的前提是什么,用adoqeury1.post吗
      

  9.   

    前提是没Post你也可以在删除前提示嘛
       with ADOTable1 do
            begin
               Try
                 if Application.messagebox(pchar('是否删除标题为:'+'" '+FieldByName('cTitle').AsString+' "'+#13+'的竞争新动态资料?'),'系统提示',MB_OKCancel + MB_DefButton2 +
                                   MB_IconQuestion + MB_ApplModal) = IdCancel then
                    exit;
                 delete;
                 Application.messagebox('删除成功!','系统提示',MB_Ok+MB_ICONINFORMATION+MB_ApplModal);
               except
                   on e: Exception do
                      begin
                        Cancel;
                        Application.messagebox(Pchar('删除失败:'+ #13+ e.message),'系统提示',MB_Ok+MB_ICONEXCLAMATION+MB_ApplModal);
                      end;
               end;
            end;
      

  10.   

    用adoquery批量提交的方法啊!!!(必须使用Tadoquery)
    设置adoquery的LockType=ltBatchOptimistic;
    //删除执行代码
    adoquery.delete;//保存执行代码
    adoquery.UpdateBatch;
    //取消执行代码
    adoquery.CancelBatch;
    可以解决你的问题 给分
      

  11.   

    用adoquery批量提交的方法
    可以让你删除多行都可以取消的
      

  12.   

    创建一个事务(Transaction ),
    "保存"时 commit;
    "取消"时 rollback;
      

  13.   

    在修改、新增時adoquery的狀態必須致為edit、insert狀態