Form常用内置函数

1.ITEM 属性控制

SET_ITEM_PROPERTY 和SET_ITEM_INSTANCE_PROPERTY 区别:

如果是控制单行记录或者多行记录中的全部记录:SET_ITEM_PROPERTY

如果是控制多行记录中的单一行记录:SET_ITEM_INSTANCE_PROPERTY

 

若控制数据块MTL_PLAN(多条记录)中,某些符合特定条件的record中的ITEM 才可以更改。可以

在post-query(每查询一条记录,执行一次) 触发中加入:

ifnvl(name_in('MTL_PLAN.ENABLED_FLAG'),'N') = 'N' then

set_item_instance_property('MTL_PLAN.REDUCING_FLAG',CURRENT_RECORD,UPDATE_ALLOWED,property_false);

End if;

 

 控制数据块中的 全部记录的单个ITEM是否可更改。

SET_ITEM_PROPERTY('T_TEST.TID',ENABLED,PROPERTY_FALSE);--ITEM不可获得焦点

或:

SET_ITEM_PROPERTY('T_TEST.TID’,INSERT_ALLOWED,PROPERTY_FALSE);--ITEM可以获得焦点

SET_ITEM_PROPERTY('T_TEST.TID',UPDATE_ALLOWED,PROPERTY_FALSE);

 

用代码控制ITEM 的焦点转移

有两个ITEM,ITEM1输入省份,ITEM2 输入市级。在省份ITEM 为空时,市级ITEM 是不允许输入了。

在ITEM2的的WHEN-NEW-ITEM-INSTANCE 加入

 

if :block.item1 is nullthen

         fnd_message.debug('年度不能为空');

         Go_Item(‘block.item1');

end if

 

 

2.Form 实现复制上条记录

此功能就是要实现,同时按下shift+F6自动复制上条记录。在数据块的KEY-DUPREC 触发器中加入

begin

     duplicate_record;

end;

 

3.控制删除条件的触发器

在相应数据块的KEY_DELREC加入条件控制参数。

if:parameter.P_APPROVE_FLAG = 'Y' then

     fnd_message.debug('您不能删除此记录,只能由录入员删除。');

     raise form_trigger_failure;

end if;

 

4.日历设置calendar 

1.设置itemlov属性(Enable_list_lamp)

2.(务必)validate from list 处选择no

3.Item trigger : Key_listval 中写上 calendar.show;

Calendar.show 是可以带参数的,缺省就是当天(可以打开attached libraries -> appdaypk -> calendar ),其参数就是设日历的缺省date

For example : calendar.show(to_date('2009-08-29','YYYY-MM-DD'));

 

5.Forms 数据提交的方式

commit_form

先针对form上面的数据变动进行commit,然后对于代码中的类似DML 语句也进行提交;

如果form上面的数据变动和代码中的数据变动有冲突,最后以FORM 上的为准。

适用:一般来在直接修改Form上的数据时,就使用commit_form。

 

commit

对form 和数据库进行提交。如果form上面的数据和代码中的数据变动有冲突,最后以FORM 上的为准。

适用:一般来在直接使用DML代码修改数据时,就使用commit。

 

do_key('commit_form')

会首先寻找form 下的triggers中的KEY-COMMIT 这个trigger,并执行KEY-COMMIT 中所写的代码。

如果没有KEY-COMMIT这个trigger,则会针对form 和代码一起提交。

如果form上面的数据变动和代码中的数据变动有冲突,最后以界面上的为准。

适用:只是更改了一下代码执行的任先顺序,没有什么实质区别。

 

forms_ddl('commit')

只针对代码中的update,insert,delete语句进行提交。如果form 上面的数据有变动,是不会提交的。

适用:一般不用。

 

6.ITEM默认显示时间

ITME INITIAL value 设置为 $$DBDATETIME$$

 

 

7.创建汇总ITEM

在form中创建一个item,用于加总另一个item的值

1.首先创建的Item必须与要统计值的Item在同一个block上.

2.在创建好的 item 上的 calculation 中设置好相应的函数

3.在这个 item 所对应的 block 上把 advanceddatabase precompute summaries 修改为 Yes。

 

8.更改信息级别

每次成功退出保存修改或添加记录时窗体都会弹出“FRM-40400:事务完成:已应用和保存X条记录。" 

的消息窗,可不可以在适当的触发器中改变它的属性?

:system.message_level:=25; 

commit; 

:system.message_level:=0; 

 

9.go_block

如果block_name不对造成go_block出错,exception不能捕获!说明Forms内置过程出错时,不会抛出pl/sqlexception,而是产生一个runtime event。

根据event类型,控制转到on-erroron-message触发器。如果没有这两个触发器,runtime显示错误代码信息。

注意runtime仅管forms报告错误,go_block后的代码会继续执行.即使在on-error中raiseform_trigger_failure也是如此,因为raise异常只会从当前pl/sql块退出(这一点我之前说的有误,现在改过来:)上例应该改为这样: 

go_block('block_name'); 

if not form_success then 

raise form_trigger_failure; 

else 

... 

 

10.失效标准菜单功能

失效保存按钮

WHEN-NEW-FORM-INSTANCE中加入set_menu_item_property('FILE.SAVE',enabled, property_off);

如果想在保存按钮失效后保存记录,可以在自己设计的按钮触发器中写DO_KEY('COMMIT_FORM');

注意:请失效保存快捷键Ctrl+S

KEY-COMMIT

NULL; 

 

与 此类似的还有。

set_menu_item_property('Edit.delete',enabled, property_off); 失效"Deletes Recode

set_menu_item_property('Edit.Clear',enabled, property_off); 失效"Clear Recode"

 

也可以隐藏掉

set_menu_item_property('Edit.delete',displayed, property_off);

set_menu_item_property('FILE.NEW',displayed, property_off);

 

 

11.DO_KEY

Do_key()这里说明一下,它的作用是执行某个key-xxxx即按键动作,在6i下,有如下一些动作:

Built-in                        Key Trigger           Associated Function Key
--------------------------------------------------------------------------------
BLOCK_MENU           
 Key-MENU           [Block Menu]
CLEAR_BLOCK           
 Key-CLRBLK          [Clear Block]
CLEAR_FORM            
 Key-CLRFRM        [Clear Form]
CLEAR_RECORD        
 Key-CLRREC          [Clear Record]
COMMIT_FORM       
  Key-COMMIT      [Commit]
COUNT_QUERY        
  Key-CQUERY       [Count Query Hits]
CREATE_RECORD      
 Key-CREREC         [Insert Record]
DELETE_RECORD       
 Key-DELREC         [Delete Record]
DOWN                      
  Key-DOWN          [Down]
DUPLICATE_ITEM     
  Key-DUP-ITEM     [Duplicate Item]
DUPLICATE_RECORD
 Key-DUPREC        [Duplicate Record]
EDIT_TEXTITEM      
     Key-EDIT              [Edit]
ENTER                        Key-ENTER     
     [Enter]
ENTER_QUERY            Key-ENTQRY       [Enter Query]
EXECUTE_QUERY      
 Key-EXEQRY        [Execute Query]
EXIT_FORM               
 Key-EXIT              [Exit/Cancel]
HELP                         
 Key-HELP             [Help]
LIST_VALUES          
    Key-LISTVAL        [List]
LOCK_RECORD           Key-UPDREC       [Lock Record]
NEXT_BLOCK            
 Key-NXTBLK        [Next Block]
NEXT_ITEM             
    Key-NEXT-ITEM  [Next Item]
NEXT_KEY                
  Key-NXTKEY        [Next Primary Key Fld]
NEXT_RECORD         
 Key-NXTREC        [Next Record]
NEXT_SET                
  Key-NXTSET         [Next Set of Records]
PREVIOUS_BLOCK   
  Key-PRVBLK         [Previous Block]
PREVIOUS_ITEM      
  Key-PREV-ITEM    [Previous Item]
PREVIOUS_RECORD 
 Key-PRVREC         [Previous Record]
PRINT                       
 Key-PRINT          [Print]
SCROLL_DOWN       
 Key-SCRDOWN     [Scroll Down]
SCROLL_UP              
 Key-SCRUP          [Scroll Up]
UP                            
 Key-UP                [Up]

 

 

12.defaul twhere

 

 set_block_property('JOBTSF',

                              default_where,

                             ' group_id = ' || :parameter.group_id);

      go_block('JOBTSF');

      execute_query;

 set_block_property('JOBTSF', default_where,'');

 

13.遍历数据块


块循环

Go_block(xxx);--光标到块xxx

Go_record(1);   --光标到第一条记录

Loop

        Todo-1  --添加代码

 Exit when(:system.last_record = 'TRUE'); --退出循环的条件

Next_record;    --下一条记录

End loop;

Go_record(1);   --循环结束,光标跳回第一条将记录

 

 

 

14.返回上一条记录

previous_record; --返回上一条记录

 

 

15.进入form前,弹出组织选择框

(1):首先在parameter中加上CHART_OF_ACCOUNTS_ID,ORG_NAME,ORG_CODE,ORG_ID四个参数 

(2)在form级的pre-form触发器中添加代码:fnd_org.choose_org;

 

WHEN-NEW-FORM-INSTANCE或者 WHEN-NEW-BLOCK-INSTANCE上增

APP_WINDOW.SET_TITLE('RESULT',:PARAMETER.ORG_CODE); 

其中'RESULT'是window的名字,用于设置window的title


 

 

16.打开FORM自动查询

FORM级别的WHEN-NEW-FORM-INSTANCE 添加

EXECUTE_QUERY;

 

 

17.鼠标状态控制

set_application_property(cursor_style,'BUSY');

set_application_property(cursor_style,'DEFAULT');

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值