Form9iBlock實現查詢條件記憶重新整理

2021-04-01 19:43:30 字數 1516 閱讀 1421

問題由來:

在專案中使用者使用輸入查詢並執行後,執行execute_query語句則自動恢復default_where條件查詢,希望保留輸入的查詢條件,則可以使用下面的方法。程式自動記憶使用者輸入的查詢條件,並通過直接單擊「執行查詢」按鈕恢復default_where條件過濾。

需建立以下引數:請根據查詢條件的複雜度設定長度!

:parameter.d_where    儲存block的default_where

:parameter.lastwhere    儲存block的前次查詢條件(使用者輸入)

使用block的key-exeqry觸發器

declare 

v_query varchar2(1000);

m number;

n number;

o number;   

begin

--判斷當前查詢模式,如非enter-query則恢復先前設定的default_where否則執行使用者輸入查詢

if :system.mode='enter-query' then

execute_query;

--記憶前次查詢條件並擷取where語句

v_query:=trim(get_block_property('zc_bfjh',last_query)); 

m:=length(v_query); 

n:=instr(upper(v_query),'where');

o:=instr(upper(v_query),'order');  

if v_query is not null then

if o>0 then

:parameter.lastwhere:=trim(substr(v_query,n+5,o-n-5));

else

:parameter.lastwhere:=trim(substr(v_query,n+5,m-n-5+1));

end if;

else 

:parameter.lastwhere:=''; 

end if;

else

--恢復default_where

set_block_property('zc_bfjh',default_where,:parameter.d_where);

execute_query;

end if;

end;

需執行execute_query時

--判斷是否應用記憶的查詢條件

if :parameter.lastwhere is not null or length(trim(:parameter.lastwhere))>0 then

set_block_property('zc_bfjh',default_where,:parameter.lastwhere);

end if;

(參考 .oradev.net論壇資料)

解除安裝Oracle 9i

1 停止所有oracle服務 2 刪除登錄檔中的所有關於oracle項 1 在hkey local machine software下,刪除oracle目錄 2 在hkey local machine system controlset001 services下,刪除所有oracle項 3 在hke...

oracle9i解除安裝

今天裝了oracle 9i,後來重灌遇到問題因為解除安裝未乾淨。幾經周折終於成功,現將解除安裝步驟供以後參考 1 停止服務 開啟 服務 然後停止所有oracle服務 2 刪除程式 3 刪除登錄檔中的所有關於oracle項 1 在hkey local machine software下,刪除oracl...

oracle9i解除安裝

今天裝了oracle 9i,後來重灌遇到問題因為解除安裝未乾淨。幾經周折終於成功,現將解除安裝步驟供以後參考 1 停止服務 開啟 服務 然後停止所有oracle服務 2 刪除程式 3 刪除登錄檔中的所有關於oracle項 1 在hkey local machine software下,刪除oracl...

ORACLE 8i,9i 表連線方法

一般的相等連線 select from a,b where a.id b.id 這個就屬於內連線。對於外連線 oracle中可以使用 來表示,9i可以使用left right full outer join left outer join 左外關聯 select e.last name,e.depa...

oracle 9i學習之路

oracle基本元件結構圖oracle管理後臺儲存樹結構圖 引數檔案 parameter 一 9i之前版本 pfile檔案,文字格式 二 spfile檔案,二進位制格式 口令檔案 password 本地的sysdba,以作業系統認證的形式登入。遠端的sysdba,通過passwordfile認證 儲...