你关键在以下语句后
dataunit.DataModule1.adoquery5.edit;
  dxdbgrid2.FocusedField.Text:=trim(dxdbgrid2.FocusedField.Text);
数据赋值后,没有进行存盘操作,就进行查询操作。在上面语句后面加上:
dataunit.DataModule1.adoquery5.post;
进行存盘试试。

解决方案 »

  1.   

    dataunit.DataModule1.adoquery3.RecordCount=0
    改成dataunit.DataModule1.adoquery3.isempty
      

  2.   

    query从数据库中取得的是一个数据流,在没传完recordcount永远是0,你在其他事件中读recordcount时已经传完了,也就有值。上面看了一下判断recordcount=0主要是判断是否为空用isempty要好些,而且没有传输限制。
    Query有其他属性可以调整我还不能确定是不是上面的问题,大家可以讨论一下
      

  3.   

    你的猜想是对的,如果没有移开焦点,事实上还在编辑状态时(光标还在一闪一闪),编辑的内容还没有进入dxdbgrid2.FocusedField中。你可以试一下回车后再Insert,应该就跟用按钮一样了。所以可能的办法是接到Insert后,让DBGrid虚拟执行一下回车。(DBGrid.Perform(...))。然后再进行处理。
      

  4.   

    也可以用TDBGridInplaceEdit取回当前没有存盘的数据