Dar um refresh na consulta

Prezados,

Minha situação é a seguinte: criei uma aplicação tipo Formulário Grid (View).

Então eu coloquei uma query tipo Update no evento onAfterUpdate que atualiza dados do próprio formulário com base no que foi digitado. Por exemplo:

Nome | Idade | Sexo
Fulano | 12 | M
Ciclano | 28 | M
Beutrano | 33 | M
Fulana | 25 | F

Ao editar “Fulano” e gravar, faço um update nos registros que se assemelham como “Sexo = M” por exemplo, fazendo com que a coluna “Idade” receba o número “20”.

Ok! Executei a query no onAfterUpdate, a tabela atualizou, todas as Idades foram atualizadas para 20 quando o Sexo foi igual a M, só que imediatamente após a execução da query, apesar da tabela ter sido atualizada, os dados da tela não foram atualizados.

Achei a macro sc_ajax_refresh(), mas só funciona após o evento onClick(), o que não serve para meu caso.

Como atualizar os dados da tela após o evento onAfterUpdate?

Tem um artifício tecnológico (vulgarmente conhecido como gambiarra) que pode ser usado.
No final do evento onAfterUpdate acrescente:

sc_commit_trans();
sc_redir(para_o_mesmo_formulario);

[]s

1 Curtida

Obrigado Allan,

Mas ainda falta uma dúvida. Este meu formulário é “Detalhe”, ou seja, existe um formulário “Mestre” no qual ele está inserido. Nesta situação, como proceder?

Alguém sabe?

redirecione para o form mestre, passando a chave primária atual como parâmetro.
[]s

Já tentou:

sc_master_value(‘Objeto’, Valor)

Haroldo,

É interessante sua sugestão, mas o sc_master_value funciona só para objetos como Campos, não é? Como fazer isto para um objeto do tipo “Detalhe” no qual eu quero dar um refresh? Saberia citar um exemplo mais prático, não consegui entender como utilizar exatamente este sc_master_value na situação que informei. Agradeço desde já.

Falando em refresh eu estou com um outro problema com relaçao a isso, num grid editável como fazer que a ordenação do select seja atualizado assim que um novo ítem for inserido ? Do jeito que está ele fica fora de ordem até que o formulário seja recarregado novamente com um F5 por exemplo.

Algo melhor não me veio a cabeça.
Faça um reload no formulário após o insert, onAfterInsert. Não se esqueça do commit.

Almeida,

Como eu sou um novato no SC daria pra me explicar melhor como eu faço para dar esse reload na pagina ? Procurei uma macro do SC pra isso mas não encontrei. :frowning:

tente assim:
Evento: onAfterInsert:

sc_commit_trans();
sc_redir(nome_do_form, "", "_SELF");

Esse seu form, grid editável é um detalhe de algum formulário?

Almeida,

Sim, ele é detalhe de um outro formulário de registro único.