EBS FORM基本6. 手电筒(QUERY_FIND)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了EBS FORM基本6. 手电筒(QUERY_FIND)相关的知识,希望对你有一定的参考价值。

基本6. 手电筒(QUERY_FIND)

手电筒具体流程参考
手电筒触发器参考

开发步骤
  1. 从APPSTAND.fmb中复制QUERY_FIND对象组,获得块、窗口、画布的模板,之后将对象组删掉
  2. 从数据块中将要查询的项复制过来,设置子类信息,设置:数据库–数据库项–否,因为只是用来暂时保存这些数据而已
  3. 新建LOV(可选,如果是手工输入就不需要做,但一般是要用LOV的,否则输错会导致没有数据)
  4. 修改QUERY_FIND块中按钮的触发器
    • 清除按钮:app_find.clear;
    • 新建按钮:app_find.new(‘TEST_BLOCK‘);
    • 查找按钮:
      1. :parameter.G_query_find := ‘TRUE‘;
      2. app_find.find(‘TEST_BLOCK‘);
      3. :parameter.G_query_find := ‘FALSE‘;
  5. 在主块触发器中添加QUERY_FIND触发器
    • 内容:app_find.query_find(‘TEST_BLOCK‘,‘QUERY_FIND‘,‘QUERY_FIND‘);
    • 语法:APP_FIND.QUERY_FIND(<results window>,<Find window>,<Find block>);
      这个触发器会在用户点击手电筒的时候调出这个查询窗口。
  6. 在主块触发器中添加PRE-QUERY触发器
    1. IF :PARAMETER.G_QUERY_FIND = ‘TRUE‘ THEN
    2. :TEST_BLOCK.NAME := :QUERY_FIND.NAME;
    3. :TEST_BLOCK.AGE := :QUERY_FIND.AGE;
    4. :TEST_BLOCK.SEX := :QUERY_FIND.SEX;
    5. :TEST_BLOCK.DATE_FROM := :QUERY_FIND.DATE_FROM;
    6. :TEST_BLOCK.DATE_TO := :QUERY_FIND.DATE_TO;
    7. :PARAMETER.G_QUERY_FIND := ‘FALSE‘;
    8. END IF;
    也可以使用这个方法赋值:COPY (<find Window field>,<results field>);
    这个触发器会在查询之前将查询块中的数值先赋给目标块,当执行app_find.find(‘TEST_BLOCK’)时就能查到数据了

    当查询的是一个范围,比如数据块上只有一个日期字段,
    那么用app_find.query_range(low_value,high_value,db_item_name)
    或者app_find.query_date_range(low_value,high_value,db_item_name)
    其中low_value和high_value的类型可以是varchar2/date/number

细节剖析
  • g_query_find
    parameter.g_query_find的作用是决定查询范围的一个开关。
    在PRE-QUERY触发器中,通过判断此值,来判断此次查询是否来源于手电筒操作,从而决定是否要套用手电筒中的查询条件。
    在我们其他客户化开发中也可以借鉴这种方法。




以上是关于EBS FORM基本6. 手电筒(QUERY_FIND)的主要内容,如果未能解决你的问题,请参考以下文章

EBS FORM基本2. FORM基本对象

EBS FORM基本1. FORM开发基本步骤

EBS FORM中基本触发器

EBS FORM基本3. 触发器

EBS FORM基本5. 值列表(LOV)

EBS Form开发建立一个最简单的Form并部署到到EBS中