Atualizar Browser!

Discussão em 'Progress 4GL' iniciado por jomarkleber, Agosto 12, 2010.

  1. jomarkleber

    jomarkleber Sem Pontuação

    Bom dia pessoal,


    Eu tenho que interagir com um browser do ERP ems204. O browser esta no programa CP0318 e CP0318C, esse browse é atualizado de acordo com os parametros que são passados para ele. Esse browser tem um temp-table que descarrega nele e depois com os screen-values dos campos ele roda uma Api, acho, que atualiza os valores. De acordo com os parametros que falei vem uns valores que não correspondem a realidade de alguns produtos ai tenho que mudar via UPC.Eu consigo mudar os valores do campo que eu quero mais ele só assume o valor que eu coloco, se eu clicar dentro da celula para que a temp-table assuma os valores. Ai ta meu problema, alguem poderia me ajudar para que quando atualizar o valor do campo com o valor que eu quero de imediato eu fazer tipo um Entry no campo para ele assumir o novo valor???

    OBS.: Na hora que chamo a trigger "ENTRY" ele não sai da primeira linha do browse.

    Abaixo segue meu codigo:

    Código:
    /* Variaveis globais dos objetos da tela do CP0318 **************************/
    DEFINE NEW GLOBAL SHARED VARIABLE wh-browser AS WIDGET-HANDLE NO-UNDO.
    DEFINE NEW GLOBAL SHARED VARIABLE wh-btOk    AS WIDGET-HANDLE NO-UNDO.
    DEFINE NEW GLOBAL SHARED VARIABLE wh-btCanc  AS WIDGET-HANDLE NO-UNDO.
    DEFINE NEW GLOBAL SHARED VARIABLE wh-button  AS WIDGET-HANDLE NO-UNDO.
    DEFINE NEW GLOBAL SHARED VARIABLE wh-buffer  AS HANDLE        NO-UNDO.
    DEFINE NEW GLOBAL SHARED VARIABLE wh-bf-qt   AS HANDLE        NO-UNDO.
    DEFINE NEW GLOBAL SHARED VARIABLE wh-bf-it   AS HANDLE        NO-UNDO.
    DEFINE NEW GLOBAL SHARED VARIABLE wh-query   AS HANDLE        NO-UNDO.
    
    /* Variaveis locais CP0318 *************************************************/
    DEFINE VAR i-cont          AS INTEGER                              NO-UNDO.
    DEFINE VAR i-aux           AS INTEGER                              NO-UNDO.
    DEFINE VAR i-repeat        AS INTEGER INIT 1                       NO-UNDO.
    DEFINE VAR h-objeto        AS WIDGET-HANDLE                        NO-UNDO.
    DEFINE VAR l-log           AS LOGICAL                              NO-UNDO.
    DEFINE VAR de-qtde-ini     AS DECIMAL FORMAT "->>>,>>>,>>>,>>9.99" NO-UNDO.
    DEFINE VAR de-qtde-ini-mat AS DECIMAL FORMAT "->>>,>>>,>>>,>>9.99" NO-UNDO.
    DEFINE VAR de-qtde-ini-vlr AS DECIMAL FORMAT "->>>,>>>,>>>,>>9.99" NO-UNDO.
    
    
    /* Variaveis locais CP0318 *************************************************/
    DEFINE NEW GLOBAL SHARED VARIABLE it-codigo   LIKE ITEM.it-codigo           NO-UNDO.
    DEFINE NEW GLOBAL SHARED VARIABLE quantidade  LIKE saldo-estoq.qtidade-atu  NO-UNDO.
    DEFINE NEW GLOBAL SHARED VARIABLE cod-estabel AS CHAR FORMAT "x(03)"        NO-UNDO.
    
    /* Log para verificar o butão se esta ativo ou não */
    ASSIGN l-log = NO.
    
    DEFINE BUFFER bitem-estab FOR item-estab.
    
    /* Varre o browser para pegar as informações */
    IF VALID-HANDLE(wh-browser) THEN DO:
        /* Posiciona a tabela de parametros de estoque para pegar o ultimo médio calculado */
        FIND FIRST param-estoq NO-LOCK NO-ERROR.
        /* Verifica as quantidades e valores para pegar o calculo médio da grade */
        FOR EACH  ITEM NO-LOCK
            WHERE ITEM.it-codigo = it-codigo :
    
    
            FOR EACH item-estab 
                WHERE item-estab.it-codigo    = ITEM.it-codigo AND
                      item-estab.cod-estabel >= ""             AND
                      item-estab.cod-estabel <= "ZZZ"          NO-LOCK:
    
    
    
                   IF item-estab.sald-ini-mat-m[1] = 0 THEN NEXT.
    
                   ASSIGN de-qtde-ini-mat = de-qtde-ini-mat + item-estab.sald-ini-mat-m[1].
    
                   /*DISP item-estab.sald-ini-mat-m[1] .*/
    
    
    
                FOR EACH  saldo-estoq NO-LOCK
                    WHERE saldo-estoq.cod-estabel = item-estab.cod-estabel AND
                          saldo-estoq.it-codigo   = item-estab.it-codigo   : 
    
                    ASSIGN de-qtde-ini = de-qtde-ini + saldo-estoq.qtidade-ini.
    
                    /*DISP saldo-estoq.qtidade-ini.*/
    
                END.
            END.
    
    
            FOR EACH  movto-estoq USE-INDEX item-data NO-LOCK
                WHERE movto-estoq.it-codigo    = ITEM.it-codigo                       AND
                      movto-estoq.cod-estabel >= ""                                   AND
                      movto-estoq.cod-estabel <= "ZZZ"                                AND
                      movto-estoq.dt-trans    >= param-estoq.ult-fech-dia             AND
                      movto-estoq.dt-trans    < DATE(MONTH(TODAY) + 1 ,01,YEAR(TODAY)):
                /* Documentos de NFE e NC */
                IF movto-estoq.esp-docto <> 18 AND
                   movto-estoq.esp-docto <> 21 THEN NEXT.
    
                ASSIGN de-qtde-ini     = de-qtde-ini     + movto-estoq.quantidade
                       de-qtde-ini-mat = de-qtde-ini-mat + movto-estoq.valor-mat-m[1].
    
                /*DISP movto-estoq.nro-docto movto-estoq.quantidade movto-estoq.valor-mat-m[1].*/
    
            END.
        END.
    
    
        /* Verifica se os valores estão diferentes de zero */
        IF de-qtde-ini     <> 0 OR
           de-qtde-ini-mat <> 0 THEN DO:
            /* Vai para a primeira linha do browser */
            REPEAT i-aux = 1 TO i-repeat:
                IF i-aux > 1 THEN DO:
                    wh-browser:SELECT-NEXT-ROW().
                END.
    
    
                /* Percorre coluna a columa pegando cada informação */
                DO i-cont = 1 TO wh-browser:NUM-COLUMNS:
                    /* Percorre as colunas do browser */
                    ASSIGN wh-buffer = wh-browser:GET-BROWSE-COLUMN(i-cont)
                           wh-bf-qt  = wh-browser:GET-BROWSE-COLUMN(9)  /* Coluna de quantidade */
                           wh-bf-it  = wh-browser:GET-BROWSE-COLUMN(1). /* Item */
    
    
                    IF i-cont = 11 THEN DO:
                            
    
                        /* Pega a quantidade do KIT */
                        FIND FIRST ca-ext-item 
                             WHERE ca-ext-item.it-codigo = it-codigo NO-LOCK NO-ERROR.
    
    
                        ASSIGN de-qtde-ini-vlr = de-qtde-ini-mat / de-qtde-ini.
    
                                            
    
                        /* Multiplica os valores por as quantidades */
                        ASSIGN wh-buffer:SCREEN-VALUE = STRING(((de-qtde-ini-vlr / (IF AVAIL ca-ext-item THEN ca-ext-item.qtd-kit ELSE 1 )) * DEC(wh-bf-qt:SCREEN-VALUE)),">>>>>>,>>>,>>9.99") 
                               /*wh-browser:SENSITIVE   = NO*/ .
    
    
                        RUN pi-atualizacelula.
    
                    END.
                    
                END.
    
                /* Alimenta variavel do laço */
                ASSIGN i-repeat = i-repeat + 1.
    
                IF i-repeat = 24 THEN DO: 
                    ASSIGN l-log = YES.
                    LEAVE.
                END.
            END.
        END.
    END.
    
    
    PROCEDURE pi-atualizacelula:
    
        APPLY 'entry' TO wh-buffer.
    
    END PROCEDURE.
    
    
    /* wh-browser:REFRESH(). */
    
    /* Se tiver mudado o preço ele habilita o botão novamente */
    IF l-log = YES THEN DO:
        IF VALID-HANDLE(wh-btOk) THEN DO:
            ASSIGN wh-btOk:SENSITIVE = YES.
        END.
    END.
  2. k4du

    k4du Sem Pontuação

    É so colocar um OPEN QUERY "nome do seu broser " FOR EACH a tem-table .
    Logo apos onde se atribui valor ao browser.
  3. Fabrícia

    Fabrícia Sem Pontuação

    Aproveitando o tópico.
    Estou criando um cadastro simples.
    Eu tenho na tela: uma query, uma viewer e um browser todos de uma mesma tabela.
    Quando vou inserir um item, meu browser não atualiza.
    Já tentei colocar um link query -- record -- browser. Mas o browser vem zerado.
    Sem o link é mostrado os dados da tabela, porém não é atualizado.
    O que posso fazer? :?
  4. heber@dmef.com.br

    heber@dmef.com.br Sem Pontuação

    Deixa eu pegar carona...

    Qual é o modo mais fácil para se atualizar uma coluna do browse? Imagine o seguinte cenário:
    Browse.

    item qtd vr.unit vr-total
    111 1 1,36 1,36
    112 1 1,24 1,24

    Eu quero alterar a quantidade e preciso recalcular o vr-total com base no vr.unit.
    1) É uma freeform query sobre uma temp-table.
    2) Eu no trigger DISPLAY do browse coloquei o ENABLE em tt-temp.qtd.

    Eu gostaria que, ao digitar a quantidade ele recalculasse o vt-total.
    Coloquei na trigger VALUE-CHANGED do browse o assign tt-temp.vr-total = qtd * vr.unit e
    Display tt-temp.vr-total with browse {&browse-name}

    Só que não tá funcionando legal.
    Ele até altera o valor, mas só se eu mexer no campo qtd de outra linha.

    Alguém poderia me ajudar?

    Obrigado

Compartilhe esta Página