一个form中有两个DBGrid,DBGrid1是主表,DBGrid2是从表都是readonly:=true的,有一些edit对应DBGrid2中的字段,用于编辑,有一个button,里面就一句话DataModuleMain.ADOTable_Supporter_Stock.Append可是一按,立马报错,说:无法将NULL值插入列***,该列不允许空值,INSERT失败后台是MSSQL,我还没有post,这么就报这个错了,这是什么原因?谢谢

解决方案 »

  1.   

    看看是不是有控件自动INSERT了数据,打个断点看看
      

  2.   

    在ADOTable_Supporter_Stock中的OnBeforePost事件加入一行代码:
     ShowMessage('要保存数据了');然后你再循次操作下,看看 [后台是MSSQL,我还没有post]  如果你没手工Post而又激活该事件的话,那么就要检查你的代码如记录集有没移动行的所在位置(上一条/下一条),因为移动位置后会执行TDataSet的Post动作
      

  3.   

    首先要保證數據處在編輯狀態,另外你按甚麼了?       dbgrid?當然不課以阿
      

  4.   

    自增字段当然不能插入NULL值啦,在数据库中把该列允许空值就行了.
      

  5.   

    Bes96261(秋水孤鶩) :我按你的建议添加了一个OnBeforePost果然弹出来了“要保存数据”,而我的button中只有一句append(对从表添加数据)而且在此过程中,没有移动记录指针。因为是主从表,所以我试着先删除它们之间的MasterFields结果程序就可以正常,我想,这应该说明是主从关系在捣乱,请大家指教如何解决,谢谢。