Timer

Dicas do Oracle Forms Builder - Blocos, Itens, LOV, Canvas, Triggers, comandos, PLL, d2kwutil, FMB, Alert, menus, etc
Responder
LC_JK
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 46
Registrado em: Ter, 24 Ago 2004 2:02 pm
Localização: São Paulo
Contato:

Como q eu crio um timer que atualiza um campo em um determinado tempo?!

Por exemplo, se eu quiser criar um relógio digital que apareça no meu canvas.... eu tenho as váriáveis de sistema (system.current_datetime)....
mas toda hora eu teria q estar atualizando pra pegar a hora.... como q faço isso?!
Avatar do usuário
tfg
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 83
Registrado em: Seg, 03 Mai 2004 3:38 pm
Localização: Novo Hamburgo - RS

Primeiro, você precisa criar seu TIMER. Onde criar? (você que decide isso. Pode ser na PRE-FORM, pode ser dentro de uma WHEN-BUTTON-PRESSED, etc)

Aí vai os passos:

Selecionar tudo

DECLARE
  hour_timer TIMER;
  one_hour   NUMBER(7):=3600000;   -- expira de hora em hora
BEGIN
  --cria o timer "alarm",  de uma hora (em mili-segundos)
  --(pode ser Repeat ou NO_REPEAT)
  hour_timer:= CREATE_TIMER('alarm',one_hour,REPEAT);
END;

Depois, você tem que criar uma trigger When-Timer-Expired. Nela você coloca o código que você deseja que dispare.

.
LC_JK
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 46
Registrado em: Ter, 24 Ago 2004 2:02 pm
Localização: São Paulo
Contato:

obrigado...

eu fiz dessa forma mesmo.... mas não sabia se estava correto!!!

:-o
LC_JK
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 46
Registrado em: Ter, 24 Ago 2004 2:02 pm
Localização: São Paulo
Contato:

obrigado...

eu fiz dessa forma mesmo.... mas não sabia se estava correto!!!

:-o
LC_JK
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 46
Registrado em: Ter, 24 Ago 2004 2:02 pm
Localização: São Paulo
Contato:

quer dizer, não sabia se era a forma correta ou se tinha alguma outra forma pra fazer isso!!
Avatar do usuário
Toad
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 253
Registrado em: Sex, 18 Nov 2005 2:14 pm
Localização: Seattle, WA
Contato:
Matheus Gonçalves
matheus.dev
twitter.com/developer__c

Um exemplo pra fazer o uso no When-Timer-Expired:

Selecionar tudo

DECLARE 
  tm_name  VARCHAR2(40); 
BEGIN 
	break;
  tm_name  := upper(Get_Application_Property(TIMER_NAME)); 
 
  IF tm_name = 'ALARM' THEN 
     :agora := sysdate;
  END IF; 
END;
Ou seja, quando ele virar o timer, ele atualiza o dado do relógio da tela.
Avatar do usuário
alef
Rank: Analista Pleno
Rank: Analista Pleno
Mensagens: 119
Registrado em: Ter, 06 Nov 2007 2:45 pm
Localização: Patos de Minas - MG
Alexandre Matos
Patos de Minas - MG
Do interior de Minas para o resto do Mundo

Tutorial passo-a-passo para eventual pesquiza no futuro.

Primeiro criar o timer na when-new-form-instance (ou outra qualquer)

Selecionar tudo

     DECLARE 
          temporizador Timer;
          T NUMBER(5) := 60000; -- 1 minuto
     BEGIN
          temporizador := CREATE_TIMER('tempo', T, REPEAT);
     END;
depois crio uma trigger WHEN-TIMER-EXPIRED a nivel de forms que o Toad usou como exemplo e fazendo algumas modificações.

Selecionar tudo

     DECLARE 
          tm_name  VARCHAR2(40); 
     BEGIN 
          break; 
          tm_name  := Get_Application_Property(TIMER_NAME); 
          IF tm_name = 'tempo' THEN 
               :Bloco.Relogio := sysdate;  -- acerta a hora atual.
          END IF; 
     END;
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 12 visitantes