oracle形式的计时器问题 [英] problem with timer in oracle form

查看:92
本文介绍了oracle形式的计时器问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在处理由oracle Forms(6i)创建的应用程序. 我尝试在其中一种表单中使用计时器,在测试过程中一切正常,然后将表单移至生产环境. 当我打开表单进入生产环境时,打开表单时我尝试访问另一个表单时遇到了问题. 不幸的是,我不知道为什么我的菜单不能正常工作,我的意思是我的菜单在运行时打开了另一个表单.

I am working on an application that created by oracle forms(6i). I try to use timer in one of my forms every thing was fine during testing and I move my form to production. when I move to production when I open my form, I try to access to another form when my form was opened I faced with problem. unfortunately, I don't know why my menu not working correctly, I mean my menu open another form when this form is running.

菜单与该表格之间没有任何关系,请告诉我.在那些具有旧规范的系统中,应用程序的呈现也面临问题.我的意思是说,我有一个带有菜单的主窗体,其中包含一个背景图片,系统会闪烁以渲染该背景.

there isn't any relation between menu and that form, kindly please advise me about it. also in those systems with old specification rendering of application face with problem. I mean I have a main form with menu that contain a background picture, system flashing for rendering that background.

我根据此信息创建了表格,并且工作正常

I create my table according to this post and it is working fine

以oracle形式更新Board

我将计时器长度从300更改为1000无效:(

I changed timer length from 300 until 1000 no effect :(

我正在使用Oracle Form 6i,但我也可以转换为10g.我的oracle服务器版本是9.

I am working with Oracle forms 6i, but I can convert to 10g also. My oracle server version is 9.

我的计时器:

my timer:

触发新表单时触发

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;

推荐答案

尝试一下,它应该可以工作.

try this, it should work.


    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;

这篇关于oracle形式的计时器问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆