[RESOLVIDOMestre-detalhe - atualizar detalhe após alguma inserção

]Pessoal, boa tarde!

Eu procurei no fórum e encontrei apenas tópicos sem resposta, portanto estou trazendo novamente a questão:

Eu tenho um formulário mestre-detalhe. Como faço para atualizar o “detalhe” por ação de alguma mudança ocorrida no mestre.

Meu problema:
No formulário tenho 2 detalhes e o resultado de um, atualiza tabelas que o outro precisa ler. Então ao atualizar este primeiro detalhe, e atualizar alguns campos do mestre, eu preciso dar um refresh no outro detalhe…

Não sei se ficou confuso, mas esse é o meu problema.

Se alguém souber como fazer, serei muito grato.

Abraços
Marcelo

A atualização de dados eu sempre faço via banco, por exemplo eu uso triggers. Estude esse link: http://imasters.com.br/artigo/8123/mysql/mysql-triggers/

Sobre o “refresh” terás que usar um Ajax no campo que irá atualizar o mestre.

Você vai usar a macro do SC: sc_master_value, leia sobre ela no WEBHELP.

Olá

A questão toda é que eu tenho num formulário 2 detalhes.

Sendo:
Mestre - Capa do orçamento
Detalhe 1 - Impostos por grupo de serviços
Detalhe 2 - Serviços do orçamento

Os grupos de serviços para calcular os impostos são atualizados à medida que vou incluindo itens de serviços no detalhe 2. Quando incluo um novo serviço, preciso dar um refresh no detalhe 1 para que o “select” de grupos de serviços seja atualizado com o novo grupo. Todas as atualizações faço em tabelas…

Se não me fiz entender por favor me digam.

Abraços
Marcelo

Então desde um formulário você pode chamar a função no detalhe

Porque você não dá um refresh no mestre, ele vai carregar os detalhes novamente com os dados atualizados.

Saulo

Neste caso usando “sc_redir”?

Mas dentro de um detalhe quando uso esta macro, o sistema abre o mestre dentro da área do detalhe.

Como faço então para dar “refresh” no mestre a partir do detalhe?

Abraços
Marcelo

Eu não sei onde você esta abrindo esse mestre mas se for fazer o refresh com sc_redir tem que usar o target como abaixo:

sc_redir(aplx.php, “”, “_parent”);

Saulo, bom dia.

Funcionou…

Mas sabe porque algumas vezes mesmo colocando no evento “AfterUpdade” a tela é redirecionada, mas a atualização não ocorre?

Está acontecendo isso. A script redirecionada a página, porém o registro não é atualizado.

Eu tentei usar “commit”, mas não ocorre a atualização.

Existe algo que se possa fazer?

Abrços
Marcelo

Tem que dar um sc_commit_trans () antes de redirecionar pro SC completar a transação, provavelmente você esta usando a conexão transacional.

Saulo
Esqueci do básico.
Valeu, funcionou.
Abraços

MRCGOMES,

Veja essa outra forma.

Crie um método JavaScript (substituindo o ? ? ? ? ? ? com o nome do form detalhe):

// como exemplo o nome do método é atualiza_bloco_itens
//
var fram = document.getElementById('nmsc_iframe_liga_?????????????');
var srcant = fram.src;
fram.src='';
fram.src = srcant;

Após incluir o registro, execute o método:

sc_ajax_javascript('atualiza_bloco_itens');

Essa dica me foi dada pelo professor Haroldo.

Tentei, mas comigo não funcionou…:disappointed_relieved:

Usei essa dica hoje em 2020 top!

1 Curtida

O meu deu certo em parte mas quando o formulário entro e vou adicionar o primeiro não funciona e saio e entro novamente quando adiciono o segundo para la atualiza.

Existem outros mestres, não tão “onipresentes”. Segui a dica deste, e hoje aplico nos mestre-detalhes dos sistemas: https://youtu.be/cJEHOARsbgY - Paulo Daniel.

1 Curtida