有关forms存盘前数据合法性的检查(范例)

王朝other·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

本范例试图解决以下问题:

假如有一个主从块.

主块中存放总数量,

从块中多条记录存主块中的数量,即把主块中的数量分放到从块中,

当从块中的数量大于主块中总数量时,则提示有误,不让保存.

本来有人提议,使用key-commit

trigger,判断以上是否符合,才决定是否执行commit。不过,后来发现key-commit至少在以上情况,是没有控制到的:

1。当没存盘,按退出按钮时,会提示是否存盘。如果回答存盘,它的存盘运行不经过key-commit.

2.

当没存盘,按查询时(先按F7),会提示是否存盘,此时若存盘,也不受key-commit控制。

最后讨论后确定,以

pre-commit

trigger

作为合法性检查。如果不符合要求,使用raise

form_trigger_failure

阻止commit的执行。

建表语句为:

create

table

test_main(main_code

varchar2(12),main_line

number,main_qty

number);

insert

into

test_main

values('1000',1,12);

insert

into

test_main

values('1000',2,22);

commit;

alter

table

test_main

add

primary

key

(main_code,main_line);

create

table

test_detail(det_code

varchar2(12),det_line

number,det_qty

number);

insert

into

test_detail

values('1000',1,6);

insert

into

test_detail

values('1000',2,3);

insert

into

test_detail

values('1000',2,11);

insert

into

test_detail

values('1000',2,2);

commit;

运行结果为:

说明:上面的为主数据块,下面的为从数据块。

主数据块

(MAIN_CODE,MAIN_LINE)

是关健字。上图为点击主数据块的第二条记录记录时,从数据块立即显示相应的详细记录:一共有三条详细数据,数量汇总是:16,

它小于22,此时允许存盘。如果汇总结果大于22,存盘时会提示:error.

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航