Atualizar campo no registro mestre do forms

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

Pessoal preciso de ajuda. Tenho um forms com registro Mestre e Detalhe. Na tabela do registro Mestre, tenho um campo onde totalizo as quantidades informadas no registro detalhe. Cada vez que insere um registro novo no detalhe, utlizo a Key-Commit para atualizar o campo do registro mestre. Ocorre que quando preciso deletar um registro no detalhe, não sei como fazer para atualizar o registro no Mestre. Existe alguma função parecida com a Key-commit para fazer isto? Tentei utlizar a propria Key-commit mas não funcionou.
SergioLBJr
Rank: Oracle Guru
Rank: Oracle Guru
Mensagens: 448
Registrado em: Ter, 16 Jun 2009 3:07 pm
Localização: Parobé - RS
Sérgio Luiz Bonemberger Junior
Programador Junior
Parobé RS

[]s

Deve funcionar já que a key-commit dispara sempre que vai ser feito um commit no banco, o que serve para insert , delete e update.

O que aconteceu?

Posta teu código da key-commit.
marlonpasquali
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 248
Registrado em: Sex, 06 Fev 2009 3:02 pm
Localização: ERECHIM - RS

Olha só. O codigo abaixo só está funcionando quando insere um novo registro no detalhe. Mas quando exclui algum, ele não atualiza o meste:



APP_STANDARD.EVENT('KEY-COMMIT');

Cursor C1 is
Select customer_trx_line_id LinhaId,
nvl(sum(quantidade),0) qtde
from pcn_comprovantes
where customer_trx_line_id = :PCN_ITEMEXP.customer_trx_line_Id
and :PCN_ITEMEXP.customer_trx_id = :PCN_BALCAO.customer_trx_id
group by customer_trx_line_id;


begin

for R1 in C1 loop

update pcn_itemexp set saldo = (quantidade - nvl(R1.qtde,0)) where customer_trx_line_id = R1.LinhaId;
Commit;

end loop;


end;
SergioLBJr
Rank: Oracle Guru
Rank: Oracle Guru
Mensagens: 448
Registrado em: Ter, 16 Jun 2009 3:07 pm
Localização: Parobé - RS
Sérgio Luiz Bonemberger Junior
Programador Junior
Parobé RS

[]s

A lógica de quando insere é diminuir o saldo. Quando exlcui deveria aumentar o saldo?

Acredito que o teu cursor não está encontrando o detalhe do qual ele vai ter de buscar os dados para atualizar o mestre.
Tenta passar estas atualização na pre-delete e na pre-insert do detalhe.
Responder
  • Informação
  • Quem está online

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