2011-06-29 46 views
0

我正在研究一個由oracle形式(6i)創建的應用程序。 我嘗試在我的一個表格中使用計時器,在測試過程中,每件事情都很好,我將表格移至生產中。 當我打開表單時轉到生產時,我嘗試訪問另一個表單,當我的表單打開時遇到了問題。 不幸的是,我不知道爲什麼我的菜單不能正常工作,我的意思是我的菜單在此窗體運行時打開另一個窗體。用oracle形式的計時器問題

菜單和該表單之間沒有任何關係,請給我建議。也在那些具有舊規格渲染應用程序面臨問題的系統中。我的意思是我有一個包含背景圖片的菜單的主窗體,系統爲呈現該背景而閃爍。

我根據這個帖子創建我的表,它是工作的罰款

Updating board in oracle form

我改變定時器的長度從300到1000沒有影響:(

我與甲骨文形成6i的工作,但我可以轉換還支持與10G我的Oracle服務器的版本是9

我定時器:

TRIGER WHEN-NEW-FORM-INSTANCE

DECLARE 
    timer_id timer; 

BEGIN 
    timer_id := CREATE_TIMER('TIMER1',1000,REPEAT); 
END; 

觸發器時,定時器過期

declare 
    timer_id timer; 
    nv_temp varchar2(400); 
    nv_temp_ch varchar2(2); 
begin 
    IF length(:NB_VTB.NB_STATUS) > 4 THEN 
     nv_temp := substr(:NB_VTB.NB_STATUS,2,length(:NB_VTB.NB_STATUS)); 

     IF(:parameter.TP_STR_LEN = 0)THEN 
       nv_temp := nv_temp ||' ('||to_char(SYSDATE,'hh:mm:ss')||') ';   
     END IF; 
     nv_temp_ch := substr(:NB_VTB.NB_STATUS,1,1); 

     if (nv_temp_ch = ' ') then 
      nv_temp_ch := '`'; 
     else 
      nv_temp := replace(nv_temp,'`',' ');  
     end if; 

     nv_temp := nv_temp || nv_temp_ch; 

     :NB_VTB.NB_STATUS := nv_temp; 
     :parameter.TP_STR_LEN := :parameter.TP_STR_LEN + 1; 

     IF :parameter.TP_STR_LEN > length(:NB_VTB.NB_STATUS)THEN 
      :parameter.TP_STR_LEN := 0; 
      :NB_VTB.NB_STATUS := FPG_FORM_STARTUP.ffn_get_status; 
     END IF; 
    END IF; 
end; 
+0

我們需要停止計時器,但我不知道我在哪裏或如何找到我的表格而不使用以及如何停止計時器 – Amir

回答

2

試試這個,它應該工作。

 
    PROCEDURE Delete_Timer IS 
     tm_id TIMER; 
    BEGIN 
     tm_id:=Find_Timer('TIMER1'); 
     IF NOT Id_Null(tm_id) THEN 
     Delete_Timer(tm_id); 
     ELSE 
     Message('Timer '||' has already been cancelled.'); 
     END IF; 
    END;