当前位置:  数据库>oracle

Oracle EBS Form中实现点击列标题进行排序

    来源: 互联网  发布时间:2017-04-06

    本文导语: 27.1 问题描述 在做EBS表单开发时,虽然使用folder功能提供了排序功能,对多行数据块可以对前三列进行指定排序,也可以单击前三列的列标题进行排序,但是不能对更多的列进行排序,如果要对更多的列进行排序,需要将要排序...

27.1 问题描述

在做EBS表单开发时,虽然使用folder功能提供了排序功能,对多行数据块可以对前三列进行指定排序,也可以单击前三列的列标题进行排序,但是不能对更多的列进行排序,如果要对更多的列进行排序,需要将要排序的列拖动到前三列才可以进行,限制较大。我们在MRPII系统中一般可以对任何列进行点击列标题进行排序,如何在保证文件夹功能的前提下实现点击列标题自动排序呢?

27.2解决方案

经过测试,我认为文件夹功能进行排序是通过更改对应的数据块的ORDER BY属性,然后执行查询而实现的,并非在客户端进行排序,而是通过数据库服务器实现排序的,明白这个原理以后就好操作了。我这个点击列标题进行排序功能需要大家使用文件夹功能,具体是指对应数据块需要有个这个数据块名加上_PROMPT的数据块对应,且这个块的项目的Name属性要为对应的列的数据源字段名,如果大家按照规范使用文件夹功能,这个前提已经满足了。情景:有个多行数据块名为BILL_LINES,实现了文件夹功能,其对应的列标题数据块是BILL_LINES_PROMPT,以下是实现部分: 

步骤1:新建参数,Name属性为SORT_RULE,Parameter Data Type属性为Char,Maximum Length属性为150,Parameter Initial Value为NO_RULE,也就是做如下图所示设置: 

步骤2:创建包BLOCK_SORT,包说明使用的代码如下:

PACKAGE BLOCK_SORT IS

  PROCEDURE GET_SORT(block_item IN VARCHAR2);

  PROCEDURE CALL_SORT(sort_rule IN VARCHAR2);

END;

包主体使用的代码如下:

PACKAGE BODY BLOCK_SORT IS

  procedure GET_SORT(block_item IN VARCHAR2) IS

              block_name varchar2(80);

              item_name varchar2(80);

              order_by1 varchar2(80);

              i number;

       BEGIN

              i := INSTR(block_item,'_PROMPT');

              IF i>1 THEN

                     item_name := SUBSTR(block_item,i+8);

                     block_name := SUBSTR(block_item,1,i-1);

                     order_by1 :=GET_BLOCK_PROPERTY(block_name,ORDER_BY);

                     IF INSTR(order_by1,item_name)>=1 THEN

                            IF INSTR(UPPER(order_by1),'DESC')>=1 then

                                   :PARAMETER.SORT_RULE :='Y' || block_name || '|' || item_name;

                            ELSE

                                   :PARAMETER.SORT_RULE :='Y' || block_name || '|' || item_name || ' DESC';

                            END IF;

                     ELSE

                            :PARAMETER.SORT_RULE :='Y' || block_name || '|' || item_name;

                     END IF;

                     Do_Key('Execute_Query');

                     :PARAMETER.SORT_RULE :='N' || SUBSTR(:PARAMETER.SORT_RULE,2);

              END IF;

       END GET_SORT;

       PROCEDURE CALL_SORT(sort_rule IN VARCHAR2) IS

       block_name varchar2(80);

       sort_rule_new varchar2(80);

       i number;

       BEGIN

              i := INSTR(sort_rule,'|');

              IF i>1 THEN

                     block_name := SUBSTR(sort_rule,2,i-2);

                     sort_rule_new := SUBSTR(sort_rule,i+1);

                     SET_BLOCK_PROPERTY(block_name,ORDER_BY,sort_rule_new);

              END IF;

       END CALL_SORT;

END;

 

步骤三:在要执行点击列标题进行排序的列标题,比如在BILL_LINES_PROMPT数据块的OSALE_PRICE项目的WHEN-MOUSE-UP触发器中的代码app_folder.event('WHEN-MOUSE-UP'); 后面增加如下代码

BLOCK_SORT.GET_SORT(:SYSTEM.TRIGGER_ITEM);

如果要对多列进行点击列标题进行排序,多次重复此步骤增加一行代码。

 

步骤四:在要执行查询的数据块,这里是BILL_LINES的PRE-QUERY事件的app_folder.event('PRE-QUERY'); 代码后增加如下代码即可。:

IF SUBSTR(:PARAMETER.SORT_RULE,1,1) = 'Y' THEN

       BLOCK_SORT.CALL_SORT(:PARAMETER.SORT_RULE);

END IF;

 本例说到的功能完成以上几个步骤后已经实现了,当然可以再扩展,更加方便使用的。


    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • oracle10g装在redhat linux es3 下进行pro*cc++进行编程的问题
  • 紧急求救:jsp对Oracle数据库中long 型数据进行模糊查询 如何查?
  • Oracle针对数据库某一行进行操作的时候,如何将这一行加行锁
  • 紧急求救:对Oracle数据库中long 型数据进行模糊查询 如何查?
  • 请问:ORACLE中的数据取出来后,需不需要进行一定的转换才能变为C语言的数据类型啊?
  • 如何能在网上找到一个可以提供ORACLE进行JSP设计的主机展示我的作品啊,付费也行
  • 使用Oracle Text进行全文检索
  • 在命令行下进行Oracle用户解锁的语句
  • 对Oracle执行计划进行监控
  • Oracle ASM环境下怎么进行数据库冷备
  • 在Oracle库存模块中进行帐龄分析
  • 使用Oracle的Decode函数进行多值判断
  • RH7.1下安装Oracle8.1.7,安装到Configuration Tools时,不能进行下去。请教高手指点。
  • 大侠解决一下java 如何和 oracle 进行连接??(高分—)
  • DBA_Oracle Startup / Shutdown启动和关闭过程详解(概念)(对数据库进行各种维护操作)
  • 使用Oracle Partition Table对日志表进行分区
  • Oracle设置系统参数进行性能优化
  • 在Oracle中手工对任务进行分区的方法
  • Oracle 12c发布简单介绍及官方下载地址
  • 在linux下安装oracle,如何设置让oracle自动启动!也就是让oracle那个服务自动启动,不是手动的
  • oracle 11g最新版官方下载地址
  • 请问su oracle 和su - oracle有什么不同?
  • Oracle 数据库(oracle Database)Select 多表关联查询方式
  • 虚拟机装Oracle R12与Oracle10g
  • Oracle数据库(Oracle Database)体系结构及基本组成介绍
  • Oracle 数据库开发工具 Oracle SQL Developer
  • 如何设置让Oracle SQL Developer显示的时间包含时分秒
  • Oracle EBS R12 支持 Oracle Database 11g
  • Oracle 10g和Oracle 11g网格技术介绍
  • SCO unix下安装oracle,但没有光盘,请大家推荐一个oracle下载站点(unix版本的)。谢谢!!!!
  • oracle中如何把表中具有相同值列的多行数据合并成一行


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3