日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

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

發布時間:2024/8/23 数据库 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 按照标题排序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;

本例說到的功能完成以上幾個步驟后已經實現了,當然可以再擴展,,更加方便使用的。

本文原創發布php中文網,轉載請注明出處,感謝您的尊重!

總結

以上是生活随笔為你收集整理的按照标题排序mysql_Oracle EBS Form中实现点击列标题进行排序的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。