1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

Duvida Browser - Ponto de retorno após edição do registro

Discussão em 'Progress 4GL' iniciado por ds201, Novembro 15, 2020.

  1. ds201

    ds201 Membro Participativo

    Bom dia a todos

    Tenho um programa (P-pai.w) que exibe um browser (B-pai.w).
    Neste browser, ao escolher um registro com duplo click, e executado um programa para editar o registro que foi escolhido no browse. Vamos chamar este programa de edição de (P-edita-reg.w).
    Quando o programa de edição é executado, é exibida uma viewer com os dados a serem editados (V-edita-reg.w).
    Neste viewer há um botão de BT-CANCELAR.

    Quando o cliente cancela a edição do registro (na viewer), para que local do browse o controle é retornado?
    Preciso fazer algumas coisas no browser se a edição do registro foi cancelada. Só não sei onde.
    Para ser exato eu preciso atualizar o browse.

    Talvez eu possa (a partir da viewer) comandar a execução de algum evento no browse.

    Alguma ideia? Algum exemplo?

    Obrigado
  2. bootstrapmaster

    bootstrapmaster Membro Master

    Bom dia, vc está dentro do evento de duplo clique do mouse, vc ira retornar exatamente apos o RUN da edição que vc está fazendo, o run para o p-edita-reg.w, é um run simples ou um run persistent ?
  3. ds201

    ds201 Membro Participativo

    Bom dia

    Eu esperava que o controle fosse devolvido para a próxima linha após "RUN pi-Incmod ('modificar':U)". Só que não funcionou.
    Estou anexando abaixo o bloco com problemas.
    Este bloco surgiu da necessidade de fazer um cópia do registro onde o cursor está posicionado no browse.
    É para atender um desejo do cliente, é não é parte do template usado.

    Arquivos Anexados:

  4. bootstrapmaster

    bootstrapmaster Membro Master

    Entendi, é que o run pi-incmod faz um run no programa de manutenção dos dados "persistent" então ele não para e espera, nesse caso vc tem que fazer os seus ajustes no programa de manutenção dos dados, ou se não for possivel, vc pode usar uma trigger temporaria de write, pra quando 'SALVAR' to registro, vc faça o que precisa.
  5. ds201

    ds201 Membro Participativo

    Muito obrigado pelo apoio.

    O que eu preciso fazer é aparentemente simples: Recarregar o browser.
    O que acontece é que quando o cliente cancela o programa de manutenção, eu excluo o registro que eu criei (anteriormente no browse para a copia) no próprio programa de manutenção. Ou seja a tabela fica correta.
    Mas no browser ele ainda aparece, justamente porque eu não consegui atualizar o browser.
    Na minha ideia inicial, esta atualização seria feita após o "run pi-incmod". Só que não funcionou.
    Teoricamente eu poderia (de dentro do programa de manutenção) comandar a atualização da query/browser, mas sobre isto eu só sei a teoria...

    Se o cliente clicar no registro "morto" aparece uma mensagem de erro do Progress e depois aparece a mensagem:
    Atenção: Um buffer na query br-table contém um registro diferente do que encontrado na lista de resultado de entrada da query (4108).

    De qualquer forma obrigado pela ajuda.
  6. bootstrapmaster

    bootstrapmaster Membro Master

    entendi, então faz o seguinte, tem a procedure state-changed, essa procedure é executada na maioria dos eventos de smart,mas tem que ter um link de state ligando as 2 smarts que vc vai usar, no seu caso acredito que seja o CONTAINTER com o smart browser, faz um message para o campo p-state, verifica o que vem nele quando vc faz o seu procedimento de manutenção dos dados do browser, bem, sabendo que o resultado de p-state, só fazer um if, dentro do bloco do if vc pega o handle da smart query e manda fazer um reposition, esse reposition ira atualizar todos os dados de todas as smarts da sua tela.

Compartilhe esta Página