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.
É so colocar um OPEN QUERY "nome do seu broser " FOR EACH a tem-table . Logo apos onde se atribui valor ao browser.
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? :?
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