bom dia Glufke,
tudo bom com vocês?
Informações adicionais:
Forms 6i
Reports 6i
DB 10g
amigos...é o seguinte, me deparei com a seguinte situação:
estou realizando uma manutenção em um forms, que contém o raise form_trigger_failure, dentro do when-button-pressed(Botão)!
...ao pressionar o botão, o forms realizar a contagem de registros ou melhor de linhas em uma determinada tabela : Tabela_A.
ele verifica se a quantidade contada está dentro da condição if, que se for maior que "zero", apresenta a mensagem: Aguarde por favor, enquanto outro usuário realiza a impressão. Ao clicarmos no botão "ok" da msg do "Aguarde", aparece o "100501: non-Oracle exception" ! Alguém já passou por isto..?
Que Deus abençõe a todos!
Abs de seu amigo Hahu
100501: non-Oracle exception
-
- 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
Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP
Brother,
Essa mensagem provavelmente é por ter o RAISE e estar sem nenhuma tratativa de exceção.
Teria como postar o código pra gente?
Essa mensagem provavelmente é por ter o RAISE e estar sem nenhuma tratativa de exceção.
Teria como postar o código pra gente?
-
- Rank: Analista Sênior
- Mensagens: 147
- Registrado em: Qui, 16 Mar 2006 11:26 am
- Localização: São Paulo
O mundo gira muito!!
bom dia Glufke,
segue as informações:
Daeee...pensei em colocar um "return", após a msg?:roll:
Abs Hahu
segue as informações:
begin
select count(*) v_contador from tabela_A;
if nvl(v_contador,0) > 0 then
l_msg('Aguarde por favor, enquanto outro usuário realiza a impressão.');
raise form_trigger_failure;
end if;
exception
when l_msd(sqlerrm);
raise form_trigger_failure;
end;
Abs Hahu
-
- 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
Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP
Brother, beleza?
De qualquer forma faltou um INTO no teu select:
De qualquer forma faltou um INTO no teu select:
select count(*) INTO v_contador from tabela_A;
-
- Rank: Programador Sênior
- Mensagens: 52
- Registrado em: Qua, 15 Out 2008 4:05 pm
- Localização: taquara-RS
dae.. beleza?
cara da uma olhada no teu exception..
cara da uma olhada no teu exception..
begin
select count(*) v_contador
Into v_contador from tabela_A;
if nvl(v_contador,0) > 0 then
l_msg('Aguarde por favor, enquanto outro usuário realiza a impressão.');
raise form_trigger_failure;
end if;
exception
when l_msd(sqlerrm) then
raise form_trigger_failure;
end;
-
- Rank: Analista Sênior
- Mensagens: 147
- Registrado em: Qui, 16 Mar 2006 11:26 am
- Localização: São Paulo
O mundo gira muito!!
Fala Glufke,
... o l_msg, estava como l_msd :
então...em relação ao into, desculpe a gafe..hihih
acertei estas questões acima... eee ainda...poxa vida... essa msg continua, está fogo de ser resolvida...
o que significa: 100501: non-Oracle?
abs Hahu
... o l_msg, estava como l_msd :
então...em relação ao into, desculpe a gafe..hihih
begin
select count(*) into v_contador
from tabela_A;
---
if nvl(v_contador,0) > 0 then
l_msg('Aguarde por favor, enquanto outro usuário realiza a impressão.');
raise form_trigger_failure;
end if;
exception
when l_msg(sqlerrm) then
raise form_trigger_failure;
end;
acertei estas questões acima... eee ainda...poxa vida... essa msg continua, está fogo de ser resolvida...
o que significa: 100501: non-Oracle?
abs Hahu
-
- Rank: Programador Sênior
- Mensagens: 52
- Registrado em: Qua, 15 Out 2008 4:05 pm
- Localização: taquara-RS
cara porque tu não faz diferente teu exception... é só uma idéia..
begin
select count(*) into v_contador
from tabela_A;
---
if nvl(v_contador,0) > 0 then
l_msg('Aguarde por favor, enquanto outro usuário realiza a impressão.');
raise form_trigger_failure;
end if;
exception
when other then
message ('Aguarde por favor, enquanto outro usuário realiza a impressão.') ;
raise form_trigger_failure;
end;
-
- Rank: Estagiário Pleno
- Mensagens: 5
- Registrado em: Sáb, 28 Fev 2009 11:26 pm
- Localização: Recife - PE
Tiago Calado
OCP Forms Developer
MV Sistemas
Recife - PE
OCP Forms Developer
MV Sistemas
Recife - PE
begin
select count(*) v_contador from tabela_A;
if nvl(v_contador,0) > 0 then
l_msg('Aguarde por favor, enquanto outro usuário realiza a impressão.');
raise form_trigger_failure;
end if;
exception
when l_msd(sqlerrm);
raise form_trigger_failure;
end;
Existe uma explicação muito lógica para o "Non-Oracle Exception", porém o seu código está meio estranho.
Da forma em que está, ele NUNCA será executado, pois há erros de sintaxe e lógica, que quem tentar executar logo perceberá. Então vamos ao que interessa:
A mensgame é clara: "100501: non-Oracle exception"
Onde "100501" é o SQLCODE e "100501: non-Oracle exception" é o SQLERRM. O nome já diz tudo. Não é uma exceção do Oracle. Já é uma pista.
Para esta mensagem ser exibida, seria necessário um tratamento de erros com EXCEPTION, com WHEN OTHERS, onde o SQLERRM fosse exibido. Seu código não tem isto, então só se pode presumir que o código que está dando o erro não é este.
Supondo a condição que realmente um erro desse poderia ocorrer, do que se trata???
Da própria exceção FORM_TRIGGER_FAILURE, que não é uma exceção do Oracle, mas sim uma exceção da ferramente Forms Developer.
Para evitar situações deste tipo, sempre que se queira tratar exceções com WHEN OTHERS dentro do Oracle Forms, deve-se presumir a utilização do FORM_TRIGGER_FAILURE para evitar surpresas desagradáveis como esta.
Eu vou reescrever seu código, com o tratamento adequado (além de fazer ajustes para que ele funcione).
Salientando que para o teu caso o FORM_TRIGGER_FAILURE seria desnecessario. Colocarei o tratamento dele supondo que isto seria uma rotina chamada de outros pontos do sistema que poderiam lançar o FORM_TRIGGER_FAILURE.
Segue abaixo:
declare
e_aguardar_impressao exception;
begin
select count(*) into v_contador from tabela_A;
if nvl(v_contador,0) > 0 then
raise e_aguardar_impressao;
end if;
exception
-- aqui é o principal ponto de discussão
when form_trigger_failure then
raise; -- levanta a exceção novamente para que a trigger do forms pare.
when e_aguardar_impressao then
l_msg('Aguarde por favor, enquanto outro usuário realiza a impressão.');
when others then
l_msg(sqlerrm);
end;
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 7 visitantes