T
tsp
Unregistered / Unconfirmed
GUEST, unregistred user!
为了避免主键值冲突,一个最简捷的(同时也是最有效的)方法是在
OnPostError中判断EDBEngineError是否为DBIERR_KEYVIOL,若是,则
对用户给出提示,同时置Action为daAbort(避免异常同时给出一个提示)。
由于Post时往往不只是要判断键值冲突,还要判断诸如某几个字段不
能为空,某几个字段必须符合一定的条件等,因此,我想把这些判断都放
到BeforePost过程中,如果某字段为空,则主动发出DBIERR_FIELDISBLANK
异常,其它不符合条件的发出相应类别的异常,我希望将对异常的处理放到
OnPostError中,以设置Action为daAbort的方式将Post过程终止。
但事实上程序完全没有按照我希望的方式执行,除了键值冲突外(在
BeforePost过程中没作任何判断),其它所有主动发出的异常只是简单地
由系统给出了一个提示,然后接下去正常执行,根本没有将异常传递到
OnPostError中。
书上讲,Raise 发出地只是异常的实例,当时建立,处理完后自动释
放,除非再次发出Raise,但也仅仅局限在该过程的Try...Except... 块
中,不会扩散到外部去,而在BeforePost中又没有类似OnPostError中的
Action可以设置。
现在有这样一个问题,如果要放在OnPostError 中处理,如何将异常
扩散过去;如果放在BeforePost中通过再次启动异常来处理,如何将Post
事件终止?
我还做过这样一个试验,将某字段设为Required,编辑时将该字段设
为空,撇开BeforePost过程(即不写该过程),保存时直接将它交给
OnPostError处理,但系统似乎并不认为它是一个Error,除了给出一个
“该字段要求赋值”的提示外,并不进入OnPostError过程,这是为什么
呢?
请各位专家解答!前提是采用以上两种方法之一。
OnPostError中判断EDBEngineError是否为DBIERR_KEYVIOL,若是,则
对用户给出提示,同时置Action为daAbort(避免异常同时给出一个提示)。
由于Post时往往不只是要判断键值冲突,还要判断诸如某几个字段不
能为空,某几个字段必须符合一定的条件等,因此,我想把这些判断都放
到BeforePost过程中,如果某字段为空,则主动发出DBIERR_FIELDISBLANK
异常,其它不符合条件的发出相应类别的异常,我希望将对异常的处理放到
OnPostError中,以设置Action为daAbort的方式将Post过程终止。
但事实上程序完全没有按照我希望的方式执行,除了键值冲突外(在
BeforePost过程中没作任何判断),其它所有主动发出的异常只是简单地
由系统给出了一个提示,然后接下去正常执行,根本没有将异常传递到
OnPostError中。
书上讲,Raise 发出地只是异常的实例,当时建立,处理完后自动释
放,除非再次发出Raise,但也仅仅局限在该过程的Try...Except... 块
中,不会扩散到外部去,而在BeforePost中又没有类似OnPostError中的
Action可以设置。
现在有这样一个问题,如果要放在OnPostError 中处理,如何将异常
扩散过去;如果放在BeforePost中通过再次启动异常来处理,如何将Post
事件终止?
我还做过这样一个试验,将某字段设为Required,编辑时将该字段设
为空,撇开BeforePost过程(即不写该过程),保存时直接将它交给
OnPostError处理,但系统似乎并不认为它是一个Error,除了给出一个
“该字段要求赋值”的提示外,并不进入OnPostError过程,这是为什么
呢?
请各位专家解答!前提是采用以上两种方法之一。