可能是由于以下原因:
 1 commit提交是对整个数据的提交,你说你用到很多表,是不是其他的表也提交了
 2 改为
  MasterAdoTable.edit;
主表添加用代码实现:MasterAdoTable.fieldbyname      
("field1").asstring=edit1.text
  ...
  ...
  然后post//不要用post  从表直接在DBGrid中编辑,
所以代码只有post; if adoconnection.intran... then //判断是在事务状态
 
 AdoConnecton.commitTrans