проблема с таймером в форме оракула - PullRequest
0 голосов
/ 29 июня 2011

Я работаю над приложением, созданным оракулом (6i). Я пытаюсь использовать таймер в одной из моих форм, все было хорошо во время тестирования, и я перемещаю свою форму в производство. когда я перехожу в производство, когда я открываю свою форму, я пытаюсь получить доступ к другой форме, когда моя форма была открыта, я столкнулся с проблемой. к сожалению, я не знаю, почему мое меню не работает должным образом, я имею в виду, что мое меню открывает другую форму, когда эта форма работает.

Нет никакой связи между меню и этой формой, пожалуйста, сообщите мне об этом. также в тех системах со старой спецификацией рендеринга приложения сталкиваются с проблемой. Я имею в виду, что у меня есть основная форма с меню, содержащим фоновое изображение, система мигает для рендеринга этого фона.

Я создаю свою таблицу согласно этому посту, и она отлично работает

Обновление платы в форме оракула

Я изменил продолжительность таймера с 300 до 1000 без эффекта: (

Я работаю с Oracle форм 6i, но я также могу конвертировать в 10g. Моя версия сервера Oracle - 9.

Мой таймер:

Тригер КОГДА-НОВАЯ ФОРМА-ИНСТАНС

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;

1 Ответ

2 голосов
/ 03 августа 2011

попробуйте это, оно должно работать.

    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;
...