procedure TDataModule1.ImmunityTableBeforePost(DataSet: TDataSet);
begin
  if MessageDlg('确定要添加或修改记录吗?',mtConfirmation,[mbYes,mbNo],0) = mrNo then
     DataModule1.ImmunityTable.Cancel;
end;
为什么一按取消就提示出错,说什么"没法将空直插入**列",我已经取消插入了呀 ~~
谢谢!!!

解决方案 »

  1.   

    这时候调用cancel已经没用了,只能调用abort取消,但abort是触发一个异常,所以可能会引起你的代码执行顺序,所以最好在调用post之前检查,不要放在事件里面检查
      

  2.   

    还有,一般插入了关键字相同的记录会有出错提示
    除了取edit的值来查找数据表看是否有相同值外,有没有其他方法
    如捕捉异常如何捕捉异常啊 ?不大会用,好象都没什么用的
    还是老debug exception notification... :(
      

  3.   

    这个事件就是用来在post之前作判断的,就如你的想法,只是要取消的话只能用abort触发一个异常来中止,比较麻烦,所以不推荐用,尽量在post之前判断。捕捉异常的方法是try except,但这个post方法必须由你自己写的才能放到try except里面,但既然有你自己写不到在post之前判断