Form中动态创建PopList

在Oracle EBS二次开发中经常会使用下拉列表,下拉列表一般是写死的,实际上也是可以使用Record Group进行动态设置,实现的步骤如下:

 

 

1,首先定义一个Record Group

假设为TEST_REC_GP,SQL如下:

  1. SELECT cr.general_name   lookup_code,  
  2.        cr.medicament_category value  
  3.   FROM cux_catalog_53_rules cr   

 

 

必须注意一点,SQL必须是两列,并且类型都是VARCHAR2,第一列作为显示的列,第二列作为后台的值。如果列和值都一样,那么就用别名查询两次就好了,类似

 

2,LIST的设置

然后需要注意一点,需要关联Record Group的下拉列表中,其中至少一个值必须是和检索出来的值是一样的,上例的SQL查询结果如下

clip_image002[4]

那么下拉列表中至少有一条和查询结果一样

clip_image002

 

3,触发器代码

在List所在的块的WHEN-NEW-BLOCK-INSTANCE触发器中,写如下代码

  1. Declare  
  2.   i number;  
  3. begin  
  4.   i := populate_group('TEST_REC_GP');  
  5.   if i = 0 then  
  6.     clear_list('CATALOG_RULES.RULE_TYPES');     
  7.     populate_list('CATALOG_RULES.RULE_TYPES','TEST_REC_GP');  
  8.   end if;   
  9. end;   
posted @ 2012-11-15 11:30  刘伟聪  阅读(543)  评论(0编辑  收藏  举报