我在DBGrid1中输入数据后,如果不移到下一行则保存时该条记录无法保存,只有移到下一行时才能保存,为什么?

解决方案 »

  1.   

    这不是BUG,只有你离开了当前编辑行,系统才能确定你已经修改完毕,才要保存。
      

  2.   

    DBGrid1就这样,不知道你想怎么样?
      

  3.   

    倒,不是DBGrid的问题,是你的问题
    唉,让你去写东东,真是对业界的一种侮辱(有点过了,但我个人认为也是一种事实)你定义个快捷吧,如用户按Ctrl+Enter或Enter或其它后就执行保存动作用过QQ吧,那么是不是我每输个字上去它就发送一次呢,当然不是,而是要进行提交(按Ctrl+Enter发送)  你的问题也一样,就看你怎么去写
      

  4.   

    >>>>>如果当前行没有退出则不能存进去,只有移到一下行才行.
    ------------------------------------------------------
    如果楼主是担心没有移到下一条,用户就把这个form关了而使数据没有保存的话,可以这样解决在form的OnClose事件中写:if AdoQuery1.State in [dsEdit,dsInsert] then AdoQuery1.Post;
      

  5.   

    在Dbgrid的OnColExit中Post就行了。
      

  6.   

    当然不是 BUG 了
    你要是不信 去看看sql server 他也是要移到下一行才保存的
    注意是“ 可移”, 如果不可移(post出错),即使点了保存按扭 也会因为事务回滚 而没保存
      

  7.   

    Bes96261(秋水孤鶩) ( )   
        B4你!别人问的问题你愿意回答就回答,水平如何你没资格去评论!楼主你可以自己多做几个试验看看就清楚了,移动到下一行其实是系统自动保存过了,那时候你已经不需要再去做保存的工作。可以在AdoQuery的BeforePost 和AfterPost事件看看。
      

  8.   

    谢谢各位,我知道SQL Server也是要移到下一行才保存的
    关键是我的有些数据不是在DBGrid中的,而是在另外的一个文本框中,所以在保存时首先把DBGrid中的保存,然后再把上面的一些文本框中的数据存到表中.
      

  9.   

    if DBGrid1.DataSource.DataSet.State in [dsEdit, dsInsert] then
        DBGrid1.DataSource.DataSet.Post;
    就可以了
      

  10.   

    可以用DBGrid1.DataSource.DataSet的保存前事件(OnBeforePost)触发来做了
    如在DBGrid1BeforePost中
    条件判断
    if 条件1 then 
    begin
      DataSet.cancel;
      exit;
    end;
    if 条件2 then 
    begin
      DataSet.cancel;
      exit;
    end;....DataSet.FieldByName('Memo').AsString := Memo1.text;
      

  11.   

    在GRID中移動記錄到下一行後,實際上與GRID相關聯的DATASET做了一次POST動作,如果記錄有改動,POST之後記錄集會標上修改的標志,所有可以保存了。