在利用table和dbgrid向数据库添加记录时,先将空间设置为添加状态,在dbgrid中显出添加的数据条目,但是如果不小心将在窗体上点了别的地方,那么控件将自动取消添加状态,向数据库提交结果。
如何才能避免这种情况发生。即dbgrid的状态不能自动取消而是必须由操作员取消

解决方案 »

  1.   

    点到其他地方就要执行post操作吧
    可以异常处理try一下如果post失败就报错出来
      

  2.   

    想要修改dbgrid的多个地方,想让adoquery一直处于编辑状态,直到修改完才一次性提交,首先在adoquery的属性locktype中设为:itbatchoptimstic
    然后adoquery.edit;让adoquery的数据集处于编辑状态然后进行多次dbgrid上的修改修改完后adoquery.post;一次性把所有修改提交
      

  3.   

    在DataSet的BeforeCancel下面写代码
    procedure TForm1.ds1BeforeCancel(DataSet: TDataSet);
    begin
      if DataSet.State = dsinsert then
      begin
          abort;
      end;
    end;