F11查询功能

 

F11查询功能是Oracle ERP的一大亮点,只要属性设置正确,几乎界面上的所有字段都能做为查询字段(Query_Allowed = Yes)。我们使用Ctrl+F11执行查询,实际上是执行do_key(execute_query)语句,系统会在查询语句中自动添加BlockWHERE ClauseORDER BY Clause,这一点可以通过帮助--检查--SYSTEM.LAST_QUERY加以验证。

另外在很多情况下,都要通过代码实现查询功能,比如打开Form时执行查询,点击按钮查询,保存后重新执行查询,某些栏位值发生变化后执行查询等

查询代码实现:

1 GO_BLOCK(‘BLOCKNAME’);

2 SET_BLOCK_PROPERTY(‘BLOCKNAME’,DFAULT_WHERE,’where clause’);

3 DO_KEY(‘EXECUTE_QUERY’); oracle建议用do_key(‘execute_query’)取代execute_query

       在实际应用中,往往需要根据业务逻辑创建一个parameter,控制是否执行查询。

常见的实现查询功能的触发器有:when-new-form-instancewhen-button-pressedwhen-new-item-instance等。在某些触发器中查询功能是禁用的,如when-validate-item等。

除了F11查询功能之外,EBS还支持一种更加灵活的查询方式—QUERY FIND,即我们通常所说的手电筒查询。这是一种Non-Query模式下的查询,主要要两种模式1Row-LOV2Find Window,所有Query Allowed属性为YesBlock都能支持这两种方式的任意一种。

1. Row-LOV

Row-LOV类似与普通LOV,在下列情况下适于使用:

(1)一次只返回一条记录,特别适合single row block

(2)detail block中自动查询关联master block的所有记录;

(3)基于主键而不是其他属性查询记录;

(4)数据量很少的情况。

比如我想建立一个关于order_line_numlov,根据选中的订单行号码查询详细信息,以下是创建Row-LOV的步骤:

(1)             首先创建一个parameter(ORDER_LINE_NUM_QF)如用于存储返回的Primary Key(order_line_num);

(2)             接着创建合适的Row-LOV设置order_line_num字段返回给:parameter. ORDER_LINE_NUM_QF

         (3)             再创建block-level PRE-QUERY trigger (Execution HierarchBefore)

IF :parameter.G_query_find = 'TRUE' THEN

                  :lines.order_line_num := :parameter.ORDER_LINE_NUM_QF;

                  :parameter.G_query_find := 'FALSE';

end if;

(4)   最后创建block-level QUERY_FIND trigger (Execution HierarchOverride)

            app_find.query_find('ORDER_LINES_QF')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值