ITPub博客

首页 > 数据库 > Oracle > EBS Form :Lov输入查询,手电筒Lov,块查询(窗口lov)

EBS Form :Lov输入查询,手电筒Lov,块查询(窗口lov)

Oracle 作者:kacey 时间:2015-01-01 11:34:19 0 删除 编辑
 

EBS Form :Lov输入查询,手电筒Lov,块查询(窗口lov)

LOV查询分为3类:LOV输入查询,手电筒LOV,块查询(窗口lov)

一:LOV输入查询

1 利用wizard向导创建LOV

2 输入SQL查询语句

3 设置返回block数据项

4 设置标题和选取列的名称

5 在block项中讲lov_property 与创立lov进行关联

优点:快捷开发  缺点:如果想要创建新数据时。包含lov的数据项在保存时,会报错。

二:手电筒LOV

对数据项进行查询,并返回一条记录(record)

1 创建一个parameters 用于接受返回的参数 :parameter.header_id

2 创建一个lov查询,并将主键赋给parameters参数

3 在要创建lov的block块 添加块级触发器 QUERY_FIND --用来触发lov

app_find.query_find('lov 的名称');

4、添加数据块级PRE-QUERY触发器,代码如下:
if :parameter.g_query_find = 'TRUE'    //如果lov被触发

then  :order_headers.header_id := :parameter.header_id; //将参数接受的返回值赋给block块中的item
:parameter.g_query_find := 'FALSE';
end if;

三、块查询(窗口lov)

什么是块查询:

当Form比较复杂,需要比较多条件才能方便查询,比如说订单号范围,日期范围等情况时,需要专门做一个非数据库块来完成。

步骤:

1.   拷贝标准块:

1.1打开APPSTAND.fmb,把其中的Object Groups  ’QUERY_FIND’ 拖到自己的Form中;

1.2选择Copy (非Subclass,因为需要修改)

会自动生成名为QUERY_FIND的块,画布,Window。

1.3删除对象组’QUERY_FIND’。

2.   修改标准查询块:

2.1设置块、画布、window的subclass;

2.2设置块的next导航块为自身,previous导航块为目标块。

2.3修改Query_find块的三个button级触发器:

   When-button-pressed:将其中的‘your blockname here’ 改为目标块。

   内容:

     :parameter.G_query_find : =’TRUE’;

     app_find.find(‘your blockname here’);

      :parameter.G_query_find : =’FALSE’;

 

     3.      创建查询条件Item:

手工创建查询条件的Item。(例如:order_number_from /order_number_to)

4.      修改块级触发器:

4.1对目标块:添加QUERY_find触发器(非Form标准,手工输入)

app_find.query_find(‘MAIN’, --目标数据块所在窗口名  ‘QUERY_FIND’, -- query_find 所在窗口名  ‘QUERY_FIND’); --query_find 数据块名

 

4.2    对目标块:添加pre-query触发器。

复制代码
IF:parameter.g_query_find = ‘TRUE’ then Copy(name_in(‘query_find.order_number’),’order_headers.order_number’);
       app_find.query_date_range(:query_find.order_date_from,
                                 :query_find.order_date_to,
                                 ‘ORDER_HEADERS.ORDER_DATE’);
       app_find.query_number_range(:query_find.vendor_number_from,
                                  :query_find.vendor_number_to,
                                  ‘ORDER_HEADERS.VENDOR_NUMBER’);
: parameter.g_query_find = ‘FALSE’; END IF; --注:app_find.query_range参数前两个是QUERY_FIND中的ITEM,后一个是查询块中的ITEM。
复制代码

 

5.      修改目标Item查询长度:

如果是范围查询,通常Item默认的最大查询长度不够,需要设置得大一点,比如200:Query Length;

6.      上传编译

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/16551397/viewspace-1386753/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2009-08-06

  • 博文量
    20
  • 访问量
    53688