触发器总结

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、form级别

1、WHEN-NEW-FORM-INSTANCE

当新form的时候

a、go_block('BLOCK_QUERY');

b、app_window.set_window_position('QUERY','CENTER','POHEADERSALL');

c、search;(主form传过来的PO_ID参数,打开这个form时,有缺省的where语

句,然后执行查询,最后go_block到这个form中的数据块上)。

具体:

写程序单元,在这个触发器中调用这个程序单元:SEARCH;

PROCEDURE search IS

ls_where varchar2(2000) :='1=1';

BEGIN

ls_where :=ls_where || ' and po_id='|| :parameter.PO_ID;

set_block_property('HYP_PO_HEADERS_ALL_V',default_where,ls_where);

go_block('HYP_PO_HEADERS_ALL_V');

execute_Query;

END;

2、QUERY-FIND

查询时,点击小手电筒时

go_block('BLOCK_QUERY');

3、CLOSE-WINDOW

关闭窗口时

exit_form;

null;

二、数据块级别

1、CLOSE-WINDOW

a、go_block('HYP_PO_HEADERS_ALL_V');

一个form中有两个数据块,一个查询,一个显示查询结果,当关掉这个数据块时,go到显示结果的数据块。

2、PRE-INSERT

a、:HYP_PO_HEADERS_ALL_V.PO_NUMBER :=cux_po_pkg.get_po_number(trunc

(sysdate));

预插入:调用cux_po_pkg包中的get_po_number函数,传入当前系统时间,trunc 取消时分秒,赋值给某个项。

b、:HYP_RECEIPT_LNIES_ALL_V.AMOUNT :=cux_po_pkg.get_quantity(:HYP_RE

CEIPT_LNIES_ALL_V.PO_LINE_ID);

得到剩余数量:订单数量—到货数量

function get_quantity(p_po_line_id number) return number is

lv_po_amount number;

lv_rec_amount number;

lv_amount number;

begin

begin

select line.quantity into lv_po_amount from hyp_po_lines_all line where line.po_line_id=p_po_line_id;

exception

when others then

lv_po_amount := 0;

end ;

begin

select sum(quantity) into lv_rec_amount from

hyp_receipt_lnies_all line where line.po_line_id=p_po_line_id;

exception

when others then

lv_rec_amount := 0;

end;

lv_amount := lv_po_amount-lv_rec_amount;

return nvl(lv_amount,0);

end;

3、WHEN-NEW-RECORD-INSTANCE

if :HYP_PO_HEADERS_ALL_V.PO_STA TUS <>'N' then

set_block_property('HYP_PO_HEADERS_ALL_V',DELETE_ALLOWED,PROP ERTY_FALSE);

set_block_property('HYP_PO_HEADERS_ALL_V',UPDA TE_ALLOWED,PROP ERTY_FALSE);

else

set_block_property('HYP_PO_HEADERS_ALL_V',DELETE_ALLOWED,PROP ERTY_TRUE);

set_block_property('HYP_PO_HEADERS_ALL_V',UPDA TE_ALLOWED,PROP ERTY_TRUE);

end if;

当某个项不为N(‘新建’)时,(其他状态为‘更改中’,和‘完成’)不可以改变这个数据块本条记录的其他项,

4、POST-QUERY

:HYP_PO_HEADERS_ALL_V.AMOUNT:=cux_po_pkg.get_po_amount(:HYP_PO_H EADERS_ALL_V.PO_ID);

每个订单的总额,是调用包中的函数

function get_po_amount(p_po_id number) return number is

lv_amount number;

begin

select sum(hv.amount) into lv_amount from hyp_po_lines_all_v hv where hv.po_id=p_po_id;

return lv_amount;

end;

三、项级别的触发器

1、WHEN-BUTTON-PRESSED

a、go_block('HYP_PO_HEADERS_ALL_V');

按某个按钮(取消)时跳转到某个数据块

b、查询,在查询块,按所输入条件查询。

DECLARE

lv_where varchar2(2000) := '1=1';

BEGIN

if :BLOCK_QUERY.PONUMBERSTART is not null then

lv_where := lv_where || 'and po_number>=''' || :BLOCK_QUERY.PONUMBERSTART || '''';

end if;

if :BLOCK_QUERY.PONUMBEREND is not null then

lv_where :=lv_where || 'and po_number<=''' || :BLOCK_QUERY.PONUMBEREND || '''';

end if;

if :BLOCK_QUERY.VENDORCODE is not null then

lv_where :=lv_where || 'and vendor_code=''' || :BLOCK_QUERY.VENDORCODE||'''';

end if;

if :BLOCK_QUERY.PODA TESTART is not null then

lv_where :=lv_where || 'and po_date>=to_date('''|| to_char(:BLOCK_QUERY.PODA TESTART,'yyyymmdd') || ''',''yyyymmdd'')';

end if;

相关文档
最新文档