frm-40735 ao executar package na trigger when-button-pressed

Dicas do Oracle Forms Builder - Blocos, Itens, LOV, Canvas, Triggers, comandos, PLL, d2kwutil, FMB, Alert, menus, etc
Responder
Jota
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 77
Registrado em: Qua, 17 Jun 2009 3:18 pm
Localização: Blumenau - SC

Boa gente,

Gostaria primeiramente de agradecer as ajudas até agora.

Estou com o seguinte problema:

Ao executar a trigger when-button-pressed abaixo:

BEGIN
IF :BLC01.SELECAO_INFORMACAO = 1 THEN
IF :BLC01.SELECAO_FORMA = 1 THEN
CMEK4600.CONTROLE(04,null,'BLC01.DT_INICIAL','BLC01.DT_FINAL');
END IF;

END IF;

END;

aparece o seguinte erro: frm-40735: when-button-pressed trigger raised unhandled exception ora-01841.

Se alguém puder me ajudar urgente.

Grato
RodrigoValentim
Moderador
Moderador
Mensagens: 367
Registrado em: Ter, 25 Mar 2008 3:41 pm
Localização: Salvador - BA
Rodrigo Valentim
Analista de Sistemas
Oracle Developer

Campanha: Faça uma pesquisa antes de perguntar!!!

Jonatas, ao pesquisar no google, encontrei o seguinte.

RA-01841: (full) year must be between -4713 and +9999, and not be 0

Cause: Illegal year entered

Action: Input year in the specified range

ou seja, verifique você esta passando a data como sendo strings, ou seja, 'BLC01.DT_INICIAL' E 'BLC01.DT_FINAL'

Faca referencia igual ao que você fez no IF, removendo as '' e colocando : no inicio do campo.

Ex:

Selecionar tudo

BEGIN 
IF :BLC01.SELECAO_INFORMACAO = 1 THEN	
IF :BLC01.SELECAO_FORMA = 1 THEN 
CMEK4600.CONTROLE(04,null,:BLC01.DT_INICIAL,:BLC01.DT_FINAL); 
END IF; 

END IF; 

END; 
Logo, tomando a liberdade, porque não fazer logo assim?

Selecionar tudo

BEGIN 
IF :BLC01.SELECAO_INFORMACAO = 1 AND :BLC01.SELECAO_FORMA = 1 THEN
  CMEK4600.CONTROLE(04,null,:BLC01.DT_INICIAL,:BLC01.DT_FINAL); 
END IF; 

END;
Jota
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 77
Registrado em: Qua, 17 Jun 2009 3:18 pm
Localização: Blumenau - SC

ok Rodrigo,

Também achei esta solução...

gerei o código daquela maneira porque ele todo é assim:

IF :BLC01.SELECAO_INFORMACAO = 1 THEN

IF :BLC01.SELECAO_FORMA = 1 THEN
CMEK4600.CONTROLE(04,null,:BLC01.DT_INICIAL,:BLC01.DT_FINAL);
ELSIF :BLC01.SELECAO_FORMA = 2 THEN
CMEK4600.CONTROLE(03,:BLC01.ID_RE,NULL,NULL);
END IF;

ELSIF :BLC01.SELECAO_INFORMACAO = 2 THEN

IF :BLC01.SELECAO_FORMA = 1 THEN
CMEK4600.CONTROLE(06,null,:BLC01.DT_INICIAL,:BLC01.DT_FINAL);
ELSIF :BLC01.SELECAO_FORMA = 2 THEN
CMEK4600.CONTROLE(05,:BLC01.ID_RE,NULL,NULL);
END IF;

ELSIF :BLC01.SELECAO_INFORMACAO = 3 THEN

IF :BLC01.SELECAO_FORMA = 1 THEN
CMEK4600.CONTROLE(08,null,:BLC01.DT_INICIAL,:BLC01.DT_FINAL);
ELSIF :BLC01.SELECAO_FORMA = 2 THEN
CMEK4600.CONTROLE(07,:BLC01.ID_RE,NULL,NULL);
END IF;
END IF;


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

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