一个外部DBGrid的append插入行, post有有关问题

一个外部DBGrid的append插入行, post有问题
Delphi(Pascal) code

DataSet.First;    //加不加这些代码, 都一样效果, 而下面的append或者insert, 效果一样
DataSet.Edit; //加不加这代码, 都一样效果
DataSet.Append; //第一条记录
DataSet.Fields[0].AsString := '测试1';
DataSet.Fields[1].AsString := '测试1';
DataSet.Fields[2].AsString := '测试1';
DataSet.Post;  //加不加这代码, 都一样效果

DataSet.Edit;  //加不加这代码, 都一样效果
DataSet.Append; //第2条记录
DataSet.Fields[0].AsString := 'test2';
DataSet.Fields[1].AsString := 'test2';
DataSet.Fields[2].AsString:='test2';
//DataSet.Post;




不加最后一行的post, 看着貌似正常. 但第2行是处于"插入"状态
abs(DataSet.RecNo)//值1
DataSet.RecNo //值-1



加上代码post后, 变成这样:
abs(DataSet.RecNo)//值1
DataSet.RecNo //值1



其实 最后一行post语句不是没有作为的, 只是不知道做了什么, 没有发挥正常的功能, 请教熟悉dbgrid的前辈, 何解? 谢谢!!!

------解决方案--------------------
探讨
DataSet.Append; //第一条记录
DataSet.Fields[0].AsString := '测试1';
DataSet.Fields[1].AsString := '测试1';
DataSet.Fields[2].AsString := '测试1';
DataSet.Post; //加不加这代码, 都一样效果

DataSet.Append; //第2条记录
Dat……

------解决方案--------------------
探讨
问题仍然是问题......
我自己弄了个测试的dbgrid, 数据库连个access, 可以成功append -> 赋值 -> post -> 再append下一条, 测试了3条以上 都没问题, 这个测试dbgrid是插入一条,结束时候就保存到access里面的.
而我最终的目标程序上的dbgrid, 是在输入了n条后,想真正存入数据库, 需通过一个入库按钮.

这也说明我的对外部dbgr……