2011-06-29 1 views
0

私はoracleフォーム(6i)で作成したアプリケーションで作業しています。 私は私のフォームのいずれかでタイマーを使用しようとすると、テスト中に問題なく動作し、フォームをプロダクションに移動します。 フォームを開いたときにプロダクションに移動すると、フォームが開いたときに別のフォームにアクセスしようとしましたが、問題が発生しました。 残念ながら、私のメニューが正しく動作しない理由はわかりません。このフォームが実行されているときに私のメニューが別のフォームを開くことを意味します。oracleフォームでのタイマーの問題

メニューとそのフォームとの間には何の関係もありませんので、私にそれについて助言してください。また、アプリケーション仕様のレンダリングが古い仕様のシステムでは問題があります。私は背景画像を含むメニューを持つメインフォームを持っていて、その背景を描画するためにシステムが点滅しているということです。

私はこの記事によると、私のテーブルを作成し、それが

Updating board in oracle form

正常に動作している私は、1000年までは300からは影響をタイマの長さを変更していない:(

私は、Oracleで働いています6Iを形成し、しかし、私はまた、10グラムに変換することができます私のOracleサーバーのバージョンが9

私のタイマーです:。

Triger-NEW-FORM-INSTANCE

DECLARE 
    timer_id timer; 

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

トリガー-TIMER-EXPIRED

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;