读书人

怎么实现对DataSet.Post的错误捕获

发布时间: 2012-04-13 13:50:24 作者: rapoo

如何实现对DataSet.Post的异常捕获?
小弟初学,在cxGrid的使用中遇到如下疑惑:

开发环境:Delphi7、MSDE

要对输入的内容做验证,验证是由数据库进行的(非空和触发器),经由对异常的处理实现验证用户输入
通过网上的搜索基本知道了思路:在TDataSet.BeforePost中处理,代码如下:

Delphi(Pascal) code
procedure TForm1.tbl1BeforePost(DataSet: TDataSet);begin    try        DataSet.Post;//手动提交更改    except        //异常处理的代码...    end;    Abort;//取消自动提交end;


运行时报错:EStackOverFlow,消息:Stack Overflow。不知道原因,遂来请教。

[解决办法]
你程序写得事件不对,不应该放在beforepost,所以堆栈溢出。
[解决办法]
执行Post的话是会先执行beforpost的,所以你写的代码就造成了循环,就会出错。解决办法,5楼的可行。另外,你不用 try..except.. //异常处理的代码... end;
这样写,你可以,在save的地方直接写DataSet.Post;beforpost里面写你要检查的项目就行了。还有,如果出错了,当前行的记录是要取消,还是不变等待用户输入,你要想好思路才行。取消用Abort;停在当前行的话就出一个提示框给用户。

读书人网 >.NET

热点推荐