EBS Form :LOV
部分资料地址:http://www.cnblogs.com/enjoy_life/articles/1895548.html
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. 上传编译

浙公网安备 33010602011771号