Forçar commit em um update dentro do Forms.

Dicas do Oracle Forms Builder - Blocos, Itens, LOV, Canvas, Triggers, comandos, PLL, d2kwutil, FMB, Alert, menus, etc
Responder
pyro
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 323
Registrado em: Qui, 21 Set 2006 10:21 am
Localização: Barala - TT

Tenho um botão que ao ser pressionado ele faz um update em uma tabela, só que esse update não é de fato consumado por causa do commit que não funciona, já tentei com:

Selecionar tudo

forms_ddl('commit');
commit_form;
commit;
Simplesmente não funciona, como é para se forçar o commit dentro do Forms após o update?
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!!!

Já tentou fazer o

Selecionar tudo

DO_KEY('COMMIT_FORM');
?

Observe se o não existe uma trigger dentro da KEY-COMMIT a nivel de item, bloco e form, caso tenha, observe o que ela faz... e veja se não é isso que está atrapalhando.

O que ocorre? Qual erro apresenta quando o botão é pressionado?
pyro
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 323
Registrado em: Qui, 21 Set 2006 10:21 am
Localização: Barala - TT

Não dispara erro nem mensagem anormal, simplesmente não dava commit.

É bug no Forms ou no meu PC, reiniciei e atualizei o Windows e começou a funcionar com o Forms_ddl('commit').

Só que agora surgiu outra dúvida, quando faço o update, após o commit a tela do Forms continua "desatualizada" em relação ao banco, como forçar um refresh na tela nesse momento? É possível? Pois o usuário ter que utilizar F8 toda vez é inviável do ponto de vista da usabilidade da interface.
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
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

Tem que fazer F8, ou pegar o GET_ITEM_PROPERTY('bloco.item', DATABASE_VALUE);
pyro
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 323
Registrado em: Qui, 21 Set 2006 10:21 am
Localização: Barala - TT

Essa dica do get_item irá funcionar, contudo ao compilar o form acusa erro, fala de objeto indefinido.
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!!!

Pyro,

Como o click do botão faz um update, a forma mais "correta" de fazer a consulta desse(s) valor(es) é fazendo uma nova consulta... você pode até aproveitar o click do botão, para depois do update ele jogar o valor que foi inserido (atualizado) na base para o campo da tela.

Não tem pra onde correr, não tem como o forms "saber" q houve um novo valor na base e é para ele consultar... inclusive, Acho que quando você for tentar fazer qualquer outro tipo de alteração na tela o forms irá dizer que os valores foram modificados por outro usuário / sessão (devido ao seu update interno) e solicitar que você faça uma consulta novamente.
pyro
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 323
Registrado em: Qui, 21 Set 2006 10:21 am
Localização: Barala - TT

Certo.

Desculpe a ignorancia, mas depois que a ação do meu botão fez o update, como jogar o valor da tabela para dentro do campo do form?

Tentei a dica do colega acima mas acusa que o objeto não existe ou é inválido.
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!!!

Tenho o seguinte modelo...
um bloco chamado blk
um botão chamado bt1
um campo chamado campo
Ex:

WHEN-BUTTON-PRESSED do bt1

Selecionar tudo

DECLARE
  VVALOR NUMBER(10,2);
BEGIN
   VVALOR := 58.87 + 38.45;
   UPDATE TABELA SET VL_SEILA = VVALOR WHERE 1=1;
   --
   COMMIT_FORM;
   --
   :BLK.CAMPO := VVALOR; /*AQUI FAÇO COM QUE O VALOR CALCULADO VÁ PARA O CAMPO DA TELA*/
   --
END;
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
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

pyro escreveu:Essa dica do get_item irá funcionar, contudo ao compilar o form acusa erro, fala de objeto indefinido.
Acho que o database_value não vai adiantar nesse caso, pois conforme o manual, o database value busca o valor que foi feito FETCH e não o valor atual.
Veja:
Database_Value returns the value that was originally fetched from the database
pyro
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 323
Registrado em: Qui, 21 Set 2006 10:21 am
Localização: Barala - TT

Consegui resolver aqui.
Não ficou bonito mas por hora atende.

Vlw pessoal.
Responder
  • Informação
  • Quem está online

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