按照标题排序mysql_Oracle EBS Form中实现点击列标题进行排序

在做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;

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

logo.gif

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/507833.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python 三维散点图拟合曲面_python实现三维拟合的方法

from matplotlib import pyplot as plt import numpy as np from mpl_toolkits.mplot3d import Axes3D fig plt.figure() ax Axes3D(fig) #列出实验数据 point[[2,3,48],[4,5,50],[5,7,51],[8,9,55],[9,12,56]] plt.xlabel("X1") plt.ylabel("X2") #表示…

vscode导入本地jar包_go导入本地包踩坑(已解决!)

当我想要仿照C语言的大程序结构,来写go语言的程序,出现下面的报错(ps:系统是windows,文本编辑器(或称IDE)是vscode)然后vscode还会时不时地在右下角出现这样地提示信息对于go语言新手…

java应用开发_开发简单的Java应用

第一章 开发简单的Java应用1、Java语言的技术分类(1)JavaSE:标准版,开发桌面应用(2)JavaEE:企业版,Web应用(3)JavaME:小型版,嵌入式2、如何开发和运行Java程序,分三步走(1)编写Java源程序*.java…

python以垂直方式输出hello world_python3提问:垂直输出Hello World,全部代码不超过2行....

垂直输出”HelloWorld”,全部代码不超过2行。输出:HelloWorld------------------------------------------------#Hello_World.pya"HelloWorld"print(a[0]\na[1]\na[2]\na[3]\na[4]... 垂直输出”Hello World”,全部代码不超过2行。…

java的static类_java中staticclass静态类详解

一般情况下是不可以用static修饰类的。如果一定要用static修饰类的话,通常static修饰的是匿名内部类。在一个类中创建另外一个类,叫做成员内部类。这个成员内部类可以静态的(利用static关键字修饰),也可以是非静态的。由于静态的内部类在定义…

java super用法_Java基础面试题汇总

blog.csdn.net/ThinkWon/article/details/104390612Java概述何为编程编程就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到结果的过程。为了使计算机能够理解人的意图,人类就必须要将需解决的问题的思路、方法、和手段通过计算…

java string返回_Java的String字符串内容总结

String--字符串获取字符串的长度使用Sring类的length()方法可获取字符串对象的长度,例:str.length();str代表指定的字符串对象;返回值为返回指定字符串的长度。例:获取字符串中指定字符的索引位置String类提供了indexOf()和lastIndexOf()方法…

汉诺塔java程序_Java编写一个汉诺塔的过程

[java]代码库/** 需求:用Java编写一个汉诺塔的过程* 汉若塔问题,就是把A柱子上面从大到小一次叠放的盘子借助B柱移到C柱上去,规则是一次只能移动一个盘子,大盘子不能放到小盘子之上** 思想:采用递归的方法来接* 1. 先将…

ajax 同步_第3部分-0:同步和异步,还有回调需要了解一下

同步是什么异步是什么 异步场景: (1)定时任务 (2)网络请求:Ajax 、图片加载 全面分析前端的网络请求方式 (3)事件绑定 异步产生知识点: 进程和线程 单线程 记一次 Vue 移…

音频重采样有什么用_最佳音频接口基本购买指南

音频接口是计算机实现录音功能的媒介设备,用于将乐器和麦克风发出的声音转换为数字信息,以便计算机可以理解并存储在硬盘上。在播放音频时,接口将数字音频文件重新转换为模拟信号,然后用监听音箱或耳机播放出来。简而言之&#xf…

java dom xpath_Java:在org.w3c.dom文档中获取元素的xpath

我写了我想要达到的目标.但是,getElementIdx()函数不会返回正确的计数. getPrevIoUsSibling()存在问题,但我不知道为什么.public static String getElementXpath(DOMElement elt){String path "";try{for (; elt ! null; elt (DOMElement) elt.getParentNode()){in…

java 正则 最后一个字符_正则表达式怎么匹配字符串中最后一串数字?

展开全部importretempDwellTime:666mre.search(r\d*,temp)printrepr(m.group()),m.start(),m.end()mre.search(r\d,temp)printrepr(m.group()),m.start(),m.end()printre.findall(r\d*,temp)输出:006661114[,,,,,,,,,,,666,]扩展资料正则表达式,校验数字…

lombok原理_听说学会用 Lombok 就可以让你早点下班?(你还不看)

听说隔壁用 Lombok 的六点就下班了,我也想六点下班!好的,那么这篇文章就介绍下什么是 Lombok,Lombok 做了什么以及 Lombok 是怎么做的?在介绍之前,先通过是否使用 Lombok 的效果来看下对比,首先…

某剧院有33排座位java_2018湖南省考行测数学题“拍档”:等差数列和等比数列...

随着八月份的到来,同学们的暑假也接近尾声,开学之后,就有一部分同学马上就要面临就业的压力,对于应届毕业生来生,参加公务员考试不失为一种好的选择,而在银行秋招中,数量关系也是考试内容之一&a…

python最大分词_中文分词算法之最大正向匹配算法(Python版)

最大匹配算法是自然语言处理中的中文匹配算法中最基础的算法,分为正向和逆向,原理都是一样的。 正向最大匹配算法,故名思意,从左向右扫描寻找词的最大匹配。 首先我们可以规定一个词的最大长度,每次扫描的时候寻找当前…

idea jar包导入_IDEA 实用功能Auto Import:自动优化导包(自动删除、导入包)

下面介绍一下IDEA的一个能显著提升写代码效率的非常好用的功能设置—— Auto ImportAuto Import的功能是可以帮助我们自动删除无用的包Import(未被引用),以及自动Import填充尚未导入的包。完全智能化地帮助我们在开发程序时,省略了导包的操作&#xff0c…

scanner java重新输入_如何使用Scanner Java重复读取用户输入

我正在尝试为我的程序创建一个简单的菜单来读取用户输入.这是代码:public void menu() {String command;System.out.println("To operate with words write: a");System.out.println("To operate with products write: b");System.out.print(&q…

@value 数组_为什么不推荐用for...in遍历数组

(一)for...in引发的一个报错两年前写的一个文章目录生成插件vue-outline,一直用着没出啥问题(本站的文章目录也是用该插件生成的)。但是最近一个网友在使用的时候却出现了异常报错,异常代码使用了一个for..…

mysql 插入字符串_mysql插入数据字符错误

Incorrect string value: \xF0\x9F... for column XXX at row 1这个问题,原因是UTF-8编码有可能是两个、三个、四个字节。Emoji表情或者某些特殊字符是4个字节,而Mysql的utf8编码最多3个字节,所以数据插不进去。我的解决方案是这样的[mysqld]…

python启动方法_python进程开启的两种方式

一、进程 1.1、方式一 from multiprocessing import Process import time #方式一 def task(name): print(f"my name is {name},启动时间") time.sleep(2) print(f"my name is {name},停止时间") if __name__ __main__: # 1 创建一个对象 p Process(targ…