Como faço para que não apareça uma mensagem quando eu COMMIT
- tfg
- Rank: Analista Júnior
- Mensagens: 83
- Registrado em: Seg, 03 Mai 2004 3:38 pm
- Localização: Novo Hamburgo - RS
Tenho um SQL que é executado quando eu pressiono um botão. No final tem um COMMIT que sempre dispara uma mensagem no Forms dizendo que "Nenhum registro foi alterado". Como faço pra que não apareça essa mensagem?
- dr_gori
- Moderador
- Mensagens: 5013
- Registrado em: Seg, 03 Mai 2004 3:08 pm
- Localização: Portland, OR USA
- Contato:
Thomas F. G
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Simples! você muda o MESSAGE_LEVEL quando vai comitar. Isso pode ser feito assim:
Essa mensagem acontece porque realmente, nenhum registro do seu Forms foi alterado. Você pode usar nessa caso o STANDARD.COMMIT, que vai comitar apenas o que alterou no BANCO. (SQL, Updates, etc sem comitar as coisas do forms)
DECLARE
VLEVEL NUMBER;
BEGIN
VLEVEL:=:SYSTEM.MESSAGE_LEVEL;
:SYSTEM.MESSAGE_LEVEL:=25;
COMMIT;
:SYSTEM.MESSAGE_LEVEL:=VLEVEL;
END;
-
- Rank: Programador Sênior
- Mensagens: 53
- Registrado em: Ter, 08 Jun 2004 2:59 pm
- Localização: Toledo - PR
Ou tb você pode tratar a mensagem de acordo com o que você deseja.
Para isto basta acrescentar os gatilhos de form ON-MESSAGE, e ON-ERROR.
Dentro do gatilho ON-MESSAGE, você pode fazer o seguinte:
então quando houver a mensagem com o codigo FRM-40400 ao invez de o forms lhe dar a mensagem padrão, ele trara a sua mensagem. O mesmo você pode utilizar no ON-ERRORS dessa forma:
E assim quando ocorrer essa mensagem de erro FRM-41803, o oracle não mostrara nada em seu formulario.
Para isto basta acrescentar os gatilhos de form ON-MESSAGE, e ON-ERROR.
Dentro do gatilho ON-MESSAGE, você pode fazer o seguinte:
DECLARE
TIPO_MENSAGEM VARCHAR2(03) := MESSAGE_TYPE;
CODIGO_MENSAGEM NUMBER := MESSAGE_CODE;
BEGIN
IF (TIPO_MENSAGEM = 'FRM') AND (CODIGO_MENSAGEM = 40400) THEN
--Registro aplicado e salvo
BELL;
MESSAGE ('Registro salvo com sucesso');
END;
DECLARE
TIPO_ERRO VARCHAR2(03) := ERROR_TYPE;
CODIGO_ERRO NUMBER := ERROR_CODE;
BEGIN
IF (TIPO_ERRO = 'FRM') AND (CODIGO_ERRO = 41803) THEN
--Não há registro anterior a partir do qual copiar valor
NULL;
END IF;
END;
-
- Rank: Programador Pleno
- Mensagens: 42
- Registrado em: Seg, 17 Mai 2004 2:41 pm
- Localização: Porto Alegre - RS
Samuel, o lamanit@
FIZ ASSIM:
COLOQUEI NA ON-MESSAGE O SEGUINTE CÓDIGO:
E NA ON-ERROR O SEGUINTE CÓDIGO:
MAS AINDA ASSIM A MENSAGEM NO CHANGES TO APPLY CONTINUA APARECENDO...
está PARECENDO QUE ELA NÃO VEM DO FORMS OU DE QUALQUER TRIGGER DO FORM.
COLOQUEI NA ON-MESSAGE O SEGUINTE CÓDIGO:
DECLARE
TIPO_MENSAGEM VARCHAR2(03) := MESSAGE_TYPE;
CODIGO_MENSAGEM NUMBER := MESSAGE_CODE;
BEGIN
IF (TIPO_MENSAGEM = 'FRM') AND (CODIGO_MENSAGEM = 40405) THEN
--Registro aplicado e salvo
BELL;
hw_lib.prc_mensagem('E', false, 'Registro salvo com sucesso');
END IF;
END;
DECLARE
TIPO_ERRO VARCHAR2(03) := ERROR_TYPE;
CODIGO_ERRO NUMBER := ERROR_CODE;
BEGIN
IF (TIPO_ERRO = 'FRM') AND (CODIGO_ERRO = 40405) THEN
--Não há registro anterior a partir do qual copiar valor
NULL;
END IF;
END;
está PARECENDO QUE ELA NÃO VEM DO FORMS OU DE QUALQUER TRIGGER DO FORM.
- dr_gori
- Moderador
- Mensagens: 5013
- Registrado em: Seg, 03 Mai 2004 3:08 pm
- Localização: Portland, OR USA
- Contato:
Thomas F. G
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Tenta fazer o seguinte:
Cria uma trigger KEY-COMMIT no seu form.
Dentro dela, você coloca aquele código:
Cria uma trigger KEY-COMMIT no seu form.
Dentro dela, você coloca aquele código:
DECLARE
VLEVEL NUMBER;
BEGIN
VLEVEL:=:SYSTEM.MESSAGE_LEVEL;
:SYSTEM.MESSAGE_LEVEL:=25;
COMMIT;
:SYSTEM.MESSAGE_LEVEL:=VLEVEL;
END;
-
- Rank: Programador Pleno
- Mensagens: 42
- Registrado em: Seg, 17 Mai 2004 2:41 pm
- Localização: Porto Alegre - RS
Samuel, o lamanit@
Também não funcionou, o erro acontece quando é acionado uma procedure de uma lib que commita os dados. Não posso só dar o commit normal sem chamar essa lib padrão.
Não dá para substituir o commit por
forms_ddl('commit');
forms_ddl('commit');
- dr_gori
- Moderador
- Mensagens: 5013
- Registrado em: Seg, 03 Mai 2004 3:08 pm
- Localização: Portland, OR USA
- Contato:
Thomas F. G
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Olá ohoseki
Se você faz um forms_ddl('commit');, você está fazendo commit apenas no banco e não no Forms.
Exemplo:
* Você altera uma informação num campo. O Forms não envia automaticamente essa alteração pro banco. Fica alterado apenas no bloco do seu forms.
* Ou seja, se você der um forms_ddl('commit'), você estará apenas comitando alguma possível alteração que já está no banco... O que você acabou de mexer, não será comitado.
Lembre-se, que as informações só são enviadas para o banco se você der um POST ou é claro, um commit mesmo...

Se você faz um forms_ddl('commit');, você está fazendo commit apenas no banco e não no Forms.
Exemplo:
* Você altera uma informação num campo. O Forms não envia automaticamente essa alteração pro banco. Fica alterado apenas no bloco do seu forms.
* Ou seja, se você der um forms_ddl('commit'), você estará apenas comitando alguma possível alteração que já está no banco... O que você acabou de mexer, não será comitado.
Lembre-se, que as informações só são enviadas para o banco se você der um POST ou é claro, um commit mesmo...

-
- Informação
-
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 8 visitantes