Commit dentro do When Validate

Dicas do Oracle Forms Builder - Blocos, Itens, LOV, Canvas, Triggers, comandos, PLL, d2kwutil, FMB, Alert, menus, etc
Responder
marlonpasquali
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 248
Registrado em: Sex, 06 Fev 2009 3:02 pm
Localização: ERECHIM - RS

Galera preciso de uma ajudo por favor:

Tenho um campo no forms que preciso validar com algumas informaçoes. Dependendo desta validaçao eu preciso inserir alguns dados em uma outra tabela.
Já tentei usar o When_Validate_Item e o Post-Change, mas ambos dão a mensagem de uso de Commit restrito dentro delas.
Tentei tambem fazer uma procedure dentro do proprio forms que seria chamado dentro da When_Validate mas tambem dá erro no Commit;

Como posso fazer isso?
obrigado,
Marlon
Avatar do usuário
madmax
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 293
Registrado em: Qua, 13 Dez 2006 5:02 pm
Localização: São Paulo
Contato:
________________________________
Douglas - Madmax.

Olá Marlon.

Da para fazer assim:

No When_Validate_Item crie sua validação normal e cria uma Progan_Unit com nome (Insere_tab) para inserir os dados nas tabelas.
Por exemplo:

If :bloco.campo is null then
--> chama a progran unit
Insere_tab;
else
--> não faz nada
null;
end;

Espero ter ajudado.

Abs.
Avatar do usuário
madmax
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 293
Registrado em: Qua, 13 Dez 2006 5:02 pm
Localização: São Paulo
Contato:
________________________________
Douglas - Madmax.

Outra coisa.

Para não mostrar mensagem de erro na hora do commit faça isso:

Selecionar tudo

VLEVEL:=:SYSTEM.MESSAGE_LEVEL; 
 :SYSTEM.MESSAGE_LEVEL:=25; 
			
 commit;
			
:SYSTEM.MESSAGE_LEVEL:=VLEVEL; 
Abs..
marlonpasquali
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 248
Registrado em: Sex, 06 Fev 2009 3:02 pm
Localização: ERECHIM - RS

Olá Douglas,
justamente. Eu tentei fazer uma program_unit conforme abaixo, mas quando passa pelo When-validate-item dá a mensagem de uso restrito de commit dentro da when-validate-item.
Por enquanto eu fiz a mesma procedure direto no banco e então faço a chamada dela dentro do forms e dai funciona.
Mas fazer a procedure dentro do proprio forms continua dando erro:

------------
PROCEDURE INSERE_PENDENCIAS (P_BATCH_ID IN NUMBER,
P_BATCH_NO IN VARCHAR2,
P_ITEM_ID IN NUMBER,
P_ITEM_NO IN VARCHAR2,
P_QTDE IN NUMBER)IS
BEGIN

Begin
Insert into pcn_apontamento_sa_unallocated (BATCH_ID,
BATCH_NO,
ITEM_ID,
ITEM_NO,
UNALLOC_QTY)
VALUES (P_BATCH_ID,
P_BATCH_NO,
P_ITEM_ID,
P_ITEM_NO,
P_QTDE);
Commit;
End;


END;
DanielNN
Moderador
Moderador
Mensagens: 641
Registrado em: Seg, 03 Set 2007 3:26 pm
Localização: Fortaleza - CE
att,

Daniel N.N.

Tente, no lugar do commit:
forms_ddl('COMMIT');
Avatar do usuário
madmax
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 293
Registrado em: Qua, 13 Dez 2006 5:02 pm
Localização: São Paulo
Contato:
________________________________
Douglas - Madmax.

Olá Marlon,

Eu faço procedure dentro de forms com insert e update sem problemas com esse esquema que passei:

1º Você de cria a variável

VLEVEL NUMBER;

2º Você deve colocar assim para não aparacer a mensagem de erro no commit;

VLEVEL:=:SYSTEM.MESSAGE_LEVEL;
:SYSTEM.MESSAGE_LEVEL:=25;
commit;
:SYSTEM.MESSAGE_LEVEL:=VLEVEL;


Espero ter ajudado.

abs.
Responder
  • Informação
  • Quem está online

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