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

  2. Anuncie Aqui ! Entre em contato fdantas@4each.com.br

Urgente Grid editavel

Discussão em 'Progress 4GL' iniciado por eder.luca2012, Março 18, 2015.

  1. eder.luca2012

    eder.luca2012 Membro Participativo

    Engraçado que mesmo via browser ao editar uma linha ele fica reclamando que a tabela que esta sendo listada esta com no-lock, mas não encontrei nenhuma opção de tirar esse no-lock, mesmo tirando depois de pelo editor não vai.
  2. bootstrapmaster

    bootstrapmaster Moderator Moderador Equipe de Suporte

    temp-table, tabela temporaria, vamos supor que eu quero alterar as quantidades de uma tabela como a item-doc-est, itens do recebimento.

    eu crio uma temp-table com estrutura identica, carrego os registros nela e dai uso ela pra fazer tudo que interessa, só depois, quando o usuario dar o ok, ou clicar em salvar, eu leio a temp-table e atualizo a tabela no banco.
    Código:
    define temp-table temporaria no-undo like item-doc-est.
    
    empty temp-table temporaria.
    for each item-doc-est no-lock
        where item-doc-est.serie = '3'
          and item-doc-est.nro-docto = '0204576'
          and item-doc-est.cod-emitente = 2498
          and item-doc-est.nat-operacao = '2101G1':
        create temporaria.
        buffer-copy item-doc-est to temporaria.
    end.
    agora vc brinca com a tabela temporaria a vontade.

    depois vc faz um for each na temporaria, localiza o registro na item-doc-est e salva os campos que vc habilitou pra alteração.

    sobre os eventos, vc consegue fazer eventos nos campos e eventos nas linhas do browser, cria o browser no appbuilder, com o browser selecionado, clica no botão Procedure settings e e lá vc cria os eventos que precisa.
  3. eder.luca2012

    eder.luca2012 Membro Participativo

    Pessoal só uma pergunta consegui fazer a questão do evento quando eu dou um duplo click sobre meu browser ele abre outra janela porém gostaria de saber como eu faço para capturar o conteúdo de um coluna da linha selecionada no browser para passar como parâmetro para que eu possa no outro formulário trazer aquele registro alguem poderia me ajudar?
  4. bootstrapmaster

    bootstrapmaster Moderator Moderador Equipe de Suporte

    basta usar o campo da tabela que está no grid, normalmente, pra evitar problemas, eu faço no evento um teste primeiro:

    if avail tabela then do:
    run janela(tabela.chave).
    end.
  5. rafael.andrade

    rafael.andrade Membro Master Moderador Equipe de Suporte

    Ao clicar no registro do browse ele fica em buffer como se você tivesse feito um FIND antes.

    Então no evento antes de abrir o programa vc faz assim, suponhamos que a tabela chama-se ped-venda e o browse BRW-MeuBrowse.
    Código:
        
    IF BRW-MeuBrowse :NUM-SELECTED-ROWS <= 0 THEN DO:
         MESSAGE "1. Primeiro selecione um registro!"
                 VIEW-AS ALERT-BOX INFO BUTTONS OK.
        RETURN NO-APPLY.
    END.
    ELSE BRW-MeuBrowse :FETCH-SELECTED-ROW(1) NO-ERROR.
       
    IF NOT AVAIL ped-venda THEN DO:
         MESSAGE "Registro selecionado não existe mais, atualize a tela!"
                 VIEW-AS ALERT-BOX INFO BUTTONS OK.
        RETURN NO-APPLY.
    END.
       
    RUN MeuPrograma(INPUT ped-venda.nr-pedido).
    

    Abraço

    RAfael
  6. rafael.andrade

    rafael.andrade Membro Master Moderador Equipe de Suporte

    O método FETCH-SELECTED-ROW traz o último estado do registro na memória, como se executasse FIND CURRENT ped-venda NO-LOCK NO-ERROR.

Compartilhe esta Página