P.S http://www.trypub.com/thread-358-1-1.html
[@more@]form 总结:1.一进页面就能看到表中已生成数据,而不用按ctrl+f11进行查询的语句:
在form级的触发器when-new-form-instance中,
写如下代码:
go_block('XXXX');
execute_query;
要查询的数据块的名称
说明:
当使用基于表建立的块时,可使用块里的任何项的GO_BLOCK或者GO_ITEM找到那个块
当查询数据到一个块里去,可通过execute_query进行处理
2.如何实现当用户输入一条记录生效后,准备输入第二条新记录时,你要自动保存前一条输入的记录。并且防止客户重复插入数据:
a)自动保存
在参数中,添加一个新参数:ISMODIFY,参数数据类型:字符;最大长度:30 参数初始值:FALSE
在数据块的触发器WHEN-NEW-RECORD-INSTANCE中,添加如下代码:

--保存记录
:system.message_level := 25;
commit;
:system.message_level := 0;

END IF;
B)
在数据块的触发器WHEN-VALIDATE-RECORD中,添加代码:
DECLARE
V_COUNT NUMBER;
BEGIN
IF GET_RECORD_PROPERTY(GET_BLOCK_PROPERTY('QS_INV_LINE', current_record), 'QS_INV_LINE', STATUS) IN ('NEW','INSERT') THEN
SELECT COUNT(*) INTO V_COUNT
FROM qs_inv_line qil
WHERE qil.SUB_INV=

AND qil.LINE_ID=

AND qil.organization_id=:parameter.org_id;
IF V_COUNT > 0 THEN FND_MESSAGE.DEBUG('库房与生产线对应重复!');
raise form_trigger_failure;
END IF;
END IF;
END;
-设为修改标记

代码说明:
1关于GET_RECORD_PROPERTY(GET_BLOCK_PROPERTY('QS_INV_LINE', current_record), 'QS_INV_LINE', STATUS) IN ('NEW','INSERT')中的两个form包的用法:
GET_RECORD_PROPERTY的用法:
get_record_property(record number,block name,property); --标识指定记录的状态。被支持的属性为:status.不同的状态值是:new,changed,query,insert
GET_BLOCK_PROPERTY的用法:
get_block_property(name,property)--返回块属性值
current_record:系统变量;Current_Record,
get_block_property('blockname',Current_Record)的结果并非总是一样的,后者更加保险!特别是刚打开Form的时候,
在WHEN-NEW-RECORD-INSTANCE里面,前者是0,后者是1
2.FND_MESSAGE.DEBUG与form_trigger_failure
FND_MESSAGE.DEBUG为系统对话框弹出,
form_trigger_failure 阻止用户保存
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10484922/viewspace-976742/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/10484922/viewspace-976742/