CLEAR_RECORD (Urgente)

Dicas do Oracle Forms Builder - Blocos, Itens, LOV, Canvas, Triggers, comandos, PLL, d2kwutil, FMB, Alert, menus, etc
Responder
rafaellomba
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 21
Registrado em: Ter, 14 Ago 2007 9:39 am
Localização: Rio de Janeiro - RJ
Rafael Lomba

Fala pessoal,

Gostaria de esclarecer uma dúvida que eu tenho... Tem como eu executar um CLEAR_RECORD de uma trigger When-Validate-Item?

Estou pergutando porque a tela que eu estou fazendo tem um item do tipo data, que assim que o usuário entrar com os dados ele faz uma busca no banco pra ver se já existe uma vigencia aberta com data superior a que está sendo aberta para a zona em questão, se já houver ele lança uma mensagem para informar que já existe e limpa a linha. Sendo o CLEAR_RECORD está lançando um erro, dizendo que não pode ser executado de dentro da trigger WHEN-VALIDATE-ITEM.

Preciso de uma resposta urgente...

Desde já obrigado...
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Brother, seguinte...

Conforme help do próprio forms:

Selecionar tudo

FRM-40737:  Illegal restricted procedure %s in %s trigger.

Cause:	Application design error.  A trigger tried to execute a restricted packaged procedure. 

Action:	Remove the packaged procedure from the trigger text. 

Level:	>25 

Type:	Error 
Não pode-se utilizar por ser uma BUILT-IN restrita.

Não tem como, após tua validação, jogar um valor nulo para teus itens?

Selecionar tudo

IF V_VALIDA = 0 
THEN
   :BLOCO.ITEM := NULL;
END IF;
rafaellomba
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 21
Registrado em: Ter, 14 Ago 2007 9:39 am
Localização: Rio de Janeiro - RJ
Rafael Lomba

trevisolli,

Não dá para eu jogar um valor nulo no campo, porque na validação ele verifica se o campo estiver nulo ele coloca o valor de TRUNC(SYSDATE)...

Agradeço a ajuda...
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

Mas, se você precisa do campo em branco, por que não apagar?

A validação que traz o trunc está na trigger do item, é isso?

When-validade-item ou post-change?
rogenaro
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 232
Registrado em: Sex, 30 Mar 2007 7:26 pm
Localização: Londrina - PR
Rafael O. Genaro

Você poderia usar um timer para disparar o CLEAR_RECORD:

Trigger When-Validate-Item do item:

Selecionar tudo

declare
   tmr timer;
begin
   tmr := create_timer('TIMER_CR', 50, no_repeat);
end;
Trigger When-Timer-Expired do Form:

Selecionar tudo

declare
   expired_timer  varchar2(30);
begin
   expired_timer :=  GET_APPLICATION_PROPERTY(TIMER_NAME);
   if expired_timer = 'TIMER_CR' then
      clear_record;
   else
      ...
      <tratamento dos demais timers do form, se houverem>
      ...
   end if;
end;
rafaellomba
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 21
Registrado em: Ter, 14 Ago 2007 9:39 am
Localização: Rio de Janeiro - RJ
Rafael Lomba

A idéia do timer funcionou...

Obrigado
Responder
  • Informação
  • Quem está online

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