oracle形式的计时器问题 [英] problem with timer in oracle form
问题描述
我正在处理由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
我将计时器长度从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屋!