Oracle Form開發手電筒查找功能實現

實現手電筒查找的功能

  首先,先按TEMPLATE將其他功能先實現,然後再來實現查找的功能。手電筒查找的Effect有兩二種,①LOV形式,②window形式。

  1、LOV查找模式:一般適用於查詢結果只返回單條條件的查詢(如主從數據塊的界面)。

  ①創建一個parameter參數:TEST_P

  ②創建一個基於主鍵查詢LOV-TEST_L,並將主鍵字段映射給Parameter參數TEST_P。

  

  ③在數據塊中創建PRE-QUERY觸發器。

  IF :parameter.G_query_find = 'TRUE' THEN :BLOCKNAME.HEADER_ID := :parameter.TEST_P; :parameter.G_query_find := 'FALSE';

  end if;

  ④在數據塊中再創建QUERY_FIND觸發器。

  begin

  app_find.query_find('TEST_L'); --調用LOV

  end;

  ⑤完成效果如下:

  

  2、WINDOW查找模式:一般適用多條件查詢,可以返回多條查詢記錄。

  ①打開在標準FORM---APPSTAND.fmb。將對象組中的QUERY_FIND拖至待開發的FORM中。

  

  ②重命名第一個數據塊、畫布、窗口(QUERY_***都是剛纔自動創建的)。USER GUID說可以重命名,但我沒有重命名成功。也懶得去折騰一個命名的問題。^_^ ③打開QUERY_FIND畫布,改寫“新建”、“查找”兩個按鈕WHEN-BUTTON-PRESS之中的代碼。

  

  NEW按鈕代碼:

  --app_find.new('Your blockname here'); app_find.new('HEK_SALE_CUST_MANUAL');

  FIND按鈕代碼:

  :parameter.G_query_find := 'TRUE'; --app_find.find('your blockname here'); app_find.find('HEK_SALE_CUST_MANUAL'); :parameter.G_query_find := 'FALSE';

  ④設置QUERY_FIND數據塊的“前一導航數據塊”,也就是要實現詢查功能的數據塊。

  

  ⑤修改QUERY_FIND數據塊KEY-NXTBLK觸發器代碼

  :parameter.G_query_find := 'TRUE'; --app_find.find('your blockname here'); app_find.find('HEK_SALE_CUST_MANUAL'); :parameter.G_query_find := 'FALSE';

  ⑦修改QUERY_FIND窗口的標題及尺寸,並在QUERY_FIND畫布上創建要查找的條件ITEM。 ⑧在要實現查詢的數據塊(如:HEK_SALE_CUST_MANUAL),創建PRE-QUERY觸發器。

  

  if :parameter.g_query_find = 'TRUE' then

  app_find.query_range(name_in('query_find.CUSTOMER_NUMBER'),name_in('query_find.CUSTOMER_NUMBER'),'HEK_SALE_CUST_MANUAL.CUST_CODE');

  app_find.query_range(:query_find.CUST_DATE,:query_find.CUST_DATE,'HEK_SALE_CUST_MANUAL.TIME_ID'); :parameter.G_query_find := 'FALSE';

  end if;

  注:app_find.query_range參數前兩個是QUERY_FIND中的ITEM,後一個是查詢塊中的ITEM。

  ⑨在要實現查詢的數據塊(如:HEK_SALE_CUST_MANUAL),再創建QUERY_FIND觸發器。

  --APP_FIND.QUERY_FIND('','',''); app_find.query_find('HEK_SALE_DEPT_MANUAL','QUERY_FIND','QUERY_FIND');

  ⑩完成效果如下:

  

  記錄指示器切換標籤頁

  Effect:

  

  1、 在該數據塊中手工增加一個ITEM

  

  設置ITEM的屬性:子類信息:設成DRILLDOWN_RECORD_INDICATOR,數據庫項:否.

  2.在新增的ITEM的WHEN-MOUSE-CLICK觸發器加入

  declare

  v_order number;

  begin

  v_order := : block_name1.item; --block_name表示要切換tab的數據塊

  if v_order is not null then

  go_block(' block_name1');

  set_block_property('block_name1 ',DEFAULT_WHERE,'ORDER_NUMBER='||v_order);

  execute_query;

  end if;

  end;

  3.這樣就可以實現類似VB中的TAB切換了。由於ORACLE FORM沒有專門的TAB函數,只能如此曲折實現。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章