Autor Tópico: [RESOLVIDO]onAfterUpdate... é realmente AFTER??  (Lida 968 vezes)

gabrielsantos

  • Iniciante
  • **
  • Mensagens: 66
[RESOLVIDO]onAfterUpdate... é realmente AFTER??
« Online: Setembro 02, 2013, 04:32:29 pm »
Bom tarde pessoal, reparei um bug (ou eu que não estou sabendo utilizar o evento) no onAfterUpdate....

minha situação:

eu tenho um formulário com mestre detalhe onde no detalhe eu tenho valores pra cada registro e atualizo um campo TOTAL no Mestre, tanto no afterInsert quanto no afterDelete o valor é atualizado normalmente só que no afterUpdate ele não atualiza.....

dai a pergunta que não quer calar, o evento onAfterUpdate está com bug ou o fluxo dele realmente é diferente...

e como eu poderia atualizar o campo TOTAL no Mestre após executar uma atualização em algum registro do Detalhe...

Obrigado!
« Última modificação: Setembro 03, 2013, 12:52:49 pm por gabrielsantos »

Haroldo

  • Expert
  • *****
  • Mensagens: 6274
  • Conhecimento diminui limitações.△TFA△
    • Infinitus Web Gestão Empresarial/Gestão ITIL/Consultoria Scriptcase
Re:onAfterUpdate... é realmente AFTER??
« Responder #1 Online: Setembro 02, 2013, 04:50:37 pm »
Se você alterou o campo da tabela que interfere o valor o ideal é que faça um sum nos registros filhos e execute o update.

execute também o sc_commit_trans()  após o update.

gabrielsantos

  • Iniciante
  • **
  • Mensagens: 66
Re:onAfterUpdate... é realmente AFTER??
« Responder #2 Online: Setembro 02, 2013, 04:58:24 pm »
Haroldo em que momento eu daria o commit..

estou fazendo assim

no afterUpdate fiz o seguinte

Código: [Selecionar]
sc_commit_trans()
atualiza_vlr_mestre();


Método atualiza_vlr_mestre
Código: [Selecionar]
//retorna soma das diárias
$check_sql = "select sum(vlr_total) from public.req_viagem_servidores
where id_req_viagem = ".{id_req_viagem};
sc_lookup(rs, $check_sql);

if (isset({rs[0][0]}))     // Row found
{
    $total = {rs[0][0]};
}


//Atualiza vlr_total na mestre
sc_master_value("vlr_total", $total);

Haroldo

  • Expert
  • *****
  • Mensagens: 6274
  • Conhecimento diminui limitações.△TFA△
    • Infinitus Web Gestão Empresarial/Gestão ITIL/Consultoria Scriptcase
Re:onAfterUpdate... é realmente AFTER??
« Responder #3 Online: Setembro 02, 2013, 05:01:51 pm »
Primeiro: Não esta realizando o update na tabela pai.

Segundo: o sc_commit_trans é depois do update.

Terceiro: execute um sc_format em total antes de exibir o valor no formulário mestre.

gabrielsantos

  • Iniciante
  • **
  • Mensagens: 66
Re:onAfterUpdate... é realmente AFTER??
« Responder #4 Online: Setembro 02, 2013, 05:11:52 pm »
Na verdade eu não preciso atualizar nada na tabela Mestre, o campo Total não é da tabela está direto na aplicação e é usado só para exibir a soma feita no select.

Já que não faço nenhum código de update manual como sei que horas executar o commit?

e o sc_format pelo menos pelo autocomplete do scriptcase não encontrei esse método foi exibido um sc_format_num com uma pá de parâmetros, poderia colocar um exemplo do sc_format?

Haroldo

  • Expert
  • *****
  • Mensagens: 6274
  • Conhecimento diminui limitações.△TFA△
    • Infinitus Web Gestão Empresarial/Gestão ITIL/Consultoria Scriptcase
Re:onAfterUpdate... é realmente AFTER??
« Responder #5 Online: Setembro 02, 2013, 05:42:33 pm »
Não precisa do commit se Não faz update ou insert para atualizar o pai.

É o sc_format_num mesmo, no help diz com o utilizar, pegue um exemplo pronto para moeda.



gabrielsantos

  • Iniciante
  • **
  • Mensagens: 66
Re:onAfterUpdate... é realmente AFTER??
« Responder #6 Online: Setembro 03, 2013, 12:52:28 pm »
Realmente só com o sc_format_num funcionou.. Obrigado pela ajuda!