我修改记录是用的dbedit,同时用一个dbgrid显示,但是产生了一个问题:当我修改dbedit中的值时,不用点击保存按钮,当我转移到下一条纪录时。上一条纪录的值实际上它自己已经保存了。这样当有人不小心改动时,数据却自动保存了,这样不太好吧。
  请问各位老师:怎样避免这样的问题呢?怎样使数据修改做得更严谨呢?谢谢回答!

解决方案 »

  1.   

    编辑的时候 dbgrid.Enabled := false
      

  2.   

    你的DataSound.AutoEdit是不是True了啊!
      

  3.   

    datasource的AutoEdit关了以后修改要想改动的数据时就会报错,说什么“adoquery not in Edit or insert”, 是怎么回事啊
      

  4.   

    建议,不要用db控件,表格可以用,但进行输入的控件最好不要用db的,用普通的edit就行,多谢几行代码,会减少很多出错的几率
      

  5.   

    可是我也比较用 数据感应控件,
    而实际情况是 程序出错几率非常高,用户体验不好,慢慢放弃了,甚至 dbgrid 我都不用,直接用 Listview 
      

  6.   

    我是这么做的:
    主界面有一个‘修改’按钮,点击后ShowModal出修改窗体,
    修改窗体上面放置一系列DBEdit,和‘确定’‘取消’两个按钮,
    两个按钮的ModalResult属性分别设mrOK和mrCancel.
    判断ShowModal返回值如果不是mrOK则Dataset.Cancel.
    procedure TForm1.btn_ModifyClick(Sender: TObject);
    begin
      DataSet.Edit;
      if frm_Modify.ShowModal = mrOK then
        DataSet.Post
      else
        DataSet.Cancel;
    end;
      

  7.   

    弹出窗体中也不要用dbedit,也用edit,让后写保存代码,不会出错的,即时出错也好跟踪
      

  8.   


    你要使用DBnavigator的进入编辑状态。