在GRID里编辑单元格后,离开单元格后,数据就会发送到DATASET了。然后我在ADODateset的beforePost事件里进行了拦截,并调用了Datase.Cancel。。这样刚才的修改就被取消了,但是却发现表格里多出来了一行,请问这是为什么?怎么解决?代码如下:
procedure TForm1.dst1BeforePost(DataSet: TDataSet);
begin
  dst1.Cancel;
end;

解决方案 »

  1.   

    一般来说
    Cancel 的写法是这样:DataSet.Append;
    try
      DataSet.FieldByName('xx').AsString := '';
      DataSet.Post;
    except
      DataSet.Cancel;
    end;Cancel 需在 Append 和 Post 之间运行,且 Post 不运行时有效果;
      

  2.   

    是修改表格后自动就POST了,并没有加代码,人工去传。。我还是想知道那个原因是什么??abort是什么?我在DATASET里没看到有这个方法呀?
      

  3.   

    不想让用户以 Grid 的方式新增你在 Grid 中的 Option 属性里,将 Append 设为 False
      

  4.   

    DataSet.abort;
    canel 是取消
    abort 是终止
      

  5.   

    你在 Grid 中的 Option 属性里,将 Append 设为 False
    DataSet.abort;
    canel 是取消
    abort 是终止
    建议你用DBGRID