[RESOLVIDO] Ajuda adicionar colunas no browse via upc

Discussão em 'EMS , HCM e Totvs 11' iniciado por Jefferson Conti, Fevereiro 18, 2014.

Status do Tópico:
Não esta aberto para novas mensagens.
  1. welderfelicio

    welderfelicio Sem Pontuação

    @Jefferson Conti fiz o treinamento onlie com o Jaison é um treinamento sério, eu recomendo . Aprendi muito com o treinamento dado pelo Jaison .
    jaisonantoniazzi curtiu isso.
  2. Jefferson Conti

    Jefferson Conti Sem Pontuação

    Ola consegui fazer.... Muitíssimo obrigado pela ajuda, é sempre bom ter pessoa disposta a ajudar outras.

    Obrigado grande abraço
    jaisonantoniazzi curtiu isso.
  3. valdir_fantin

    valdir_fantin Membro Participativo

    Ola Jaisonantoniazzi inclui duas colunas no browse , e quando altero o registro na linha 5 , a informação somente aparece na primeira linha do browse
    Voce sabe como reposicionar na linha após alterado a informação das novas colunas ?.

    Fico no aguardo
    Grato
  4. jaisonantoniazzi

    jaisonantoniazzi Membro Ativo

    Estranho, mas @valdir_fantin vou trabalhar num exemplo e postarei aqui o exemplo.
    Estou indo hoje para MG, vai demorar um pouco pois somente retornarei sábado.

    Abraço.
  5. jaisonantoniazzi

    jaisonantoniazzi Membro Ativo

  6. valdir_fantin

    valdir_fantin Membro Participativo

    Bom Dia @jaisonantoniazzi eu estou trabalhando no browse existente no en0105 , as informaçoes alteradas das colunas novas so aparece na primeira linha,

    Segue a UPC :

    Código:
    DEF Input Param P-Ind-Event      AS CHAR          NO-UNDO.
    DEF Input Param P-Ind-Object     AS CHAR          NO-UNDO.
    DEF Input Param P-Wgh-Object     AS HANDLE        NO-UNDO.
    DEF Input Param P-Wgh-frame      AS WIDGET-HANDLE NO-UNDO.
    DEF Input Param P-Cod-Table      AS CHAR          NO-UNDO.
    DEF Input Param P-Row-Table      AS ROWID         NO-UNDO.
    DEF VAR         C-Objeto         AS CHAR          NO-UNDO.
    DEF VAR h_frame AS WIDGET-HANDLE NO-UNDO.
    def var s-pai like estrutura.it-codigo.
    def var i-linha  as int.
    def var i-linha-browser  as int.
    def var i-linha-browse  as int.
    
    
    DEF NEW GLOBAL SHARED VAR wb-situac   AS WIDGET-HANDLE.
    DEF NEW GLOBAL SHARED VAR bt-wb-valid AS WIDGET-HANDLE.
    DEF NEW GLOBAL SHARED VAR wb-c-item   AS CHAR FORMAT "x(16)" NO-UNDO.
    DEFINE BUFFER b-estrutura for estrutura.
    DEFINE QUERY br-estrut for b-estrutura SCROLLING.
    
    def         var wh-browse-tit         AS WIDGET-HANDLE NO-UNDO.
    def         var wh-query-tit          AS WIDGET-HANDLE NO-UNDO.
    def         var wh-buffer-tit         AS WIDGET-HANDLE NO-UNDO.
    
    DEF         VAR wh-objeto             AS WIDGET-HANDLE NO-UNDO.
    DEF         VAR wh-frame              AS WIDGET-HANDLE NO-UNDO.
    DEFINE VARIABLE h-frame4 AS HANDLE NO-UNDO.
    define variable c-lista as char format "x(6)" init "Lista".
    ASSIGN C-Objeto = Entry(Num-Entries(P-Wgh-Object:Private-Data, "~/")
                            ,P-Wgh-Object:Private-Data, "~/").
    DEFINE BROWSE br-table2
    &ANALYZE-SUSPEND _UIB-CODE-BLOCK _DISPLAY-FIELDS br-table2 B-table-Win _STRUCTURED
      QUERY br-estrut NO-LOCK DISPLAY
          b-estrutura.it-codigo FORMAT "x(16)":U
          b-estrutura.es-codigo FORMAT "x(16)":U WIDTH 16.86
    /* _UIB-CODE-BLOCK-END */
    &ANALYZE-RESUME
        WITH NO-ASSIGN SEPARATORS SIZE 37 BY 6.75 ROW-HEIGHT-CHARS .67.
    OUTPUT TO "C:\TEMP\UPC4.TXT" APPEND.
    
    PUT     P-Ind-Event    FORMAT "X(30)"
            " "
            P-Ind-Object 
            " "
            P-Wgh-Object 
            " "
            P-Wgh-frame  
            " "
            C-Objeto       format "x(20)"
            " "
            P-Cod-Table  
            " "
            string(P-Row-Table) SKIP.      
    
     
    IF p-ind-event = "INITIALIZE" AND p-ind-object = "VIEWER" AND c-objeto = "v20in172.w" THEN DO:
       CREATE FILL-IN wb-situac
              ASSIGN ROW          = 2.15
                     COLUMN       = 77
                     FRAME        = p-wgh-frame
                     SENSITIVE    = NO
                     VISIBLE      = YES
                     HEIGHT-CHARS = 0.85
                     WIDTH-CHAR   = 06
                     FORMAT       = "x(06)"
                     SCREEN-VALUE = ""
                     TOOLTIP      = "A Eng.Produto validou estrutura.".
                    
       CREATE BUTTON bt-wb-valid
              ASSIGN ROW          = 2.15
                     COLUMN       = 83.5
                     WIDTH        = 4
                     HEIGHT       = .85
                     FRAME        = p-wgh-frame
                     VISIBLE      = YES
                     TOOLTIP      = "Validação da estrutura."          
                     SENSITIVE    = YES.
              ON CHOOSE OF bt-wb-valid PERSISTENT RUN enp/en0105-ip2.p /*(INPUT wb-c-item)*/.
              bt-wb-valid:LOAD-IMAGE("image\proexp.ico").
    END.
    
    IF p-ind-event = "AFTER-OPEN-QUERY" and p-ind-object = "BROWSER" and c-objeto = "b01in111.w"  then do:
        ASSIGN wh-objeto = p-wgh-frame.
        DO WHILE VALID-HANDLE(wh-objeto):
           put "After......................................... " wh-objeto:name skip.
    
       
           IF wh-objeto:TYPE <> "field-group" THEN DO:
              IF wh-objeto:NAME = "br-table" THEN DO:
                 /*
                 PUT " Criando.. " wh-objeto:name skip.
                 ASSIGN h-frame4 = wh-objeto:first-column
                        h-frame4 = wh-objeto:ADD-CALC-COLUMN("char","x(4)","   ","LAv",17)
                        h-frame4:name = "lista-avancada"
                        h-frame4:width = 4
                        h-frame4 = wh-objeto:ADD-CALC-COLUMN("char","x(4)","   ","LF",18)
                        h-frame4:name = "lista-final"
                        h-frame4:width = 4
                        h-frame4 = wh-objeto:first-column.                   
                 */
                 assign h-frame4 = wh-objeto:first-column.                   
                 DO WHILE h-frame4 <> ?:
                    put "h-frame4 type " string(h-frame4:type) skip.
                    IF h-frame4:TYPE <> "field-group" THEN DO:
                       PUT "H-FRAME4 =========> " h-frame4:name format "x(30)" skip
                                                  h-frame4:screen-value format "x(30)" skip.
                       IF h-frame4:NAME = "lista-avancada" THEN DO:
                          find b-estrutura where rowid(b-estrutura) = p-row-table no-lock no-error.
                          if avail b-estrutura then
                             assign s-pai = b-estrutura.it-codigo.
    
                          for each b-estrutura where b-estrutura.it-codigo = s-pai no-lock:
                              FIND wb-estrut-lista where
                                   wb-estrut-lista.item-pai   = b-estrutura.it-codigo and
                                   wb-estrut-lista.seq        = b-estrutura.seq and
                                   wb-estrut-lista.item-filho = b-estrutura.es-codigo no-error.
                              if avail wb-estrut-lista then do:
                                 if wb-estrut-lista.lista-avancada = yes then
                                    assign h-frame4:screen-value = "Sim".
                                 else
                                    assign h-frame4:screen-value = "Não".
                              end.
                              else do:
                                 assign h-frame4:screen-value = "Não".                         
                              end.
                          end.  
                          assign h-frame4:visible = yes.
                       end.
                       IF h-frame4:NAME = "lista-final" THEN DO:
                      
                      
                          find b-estrutura where rowid(b-estrutura) = p-row-table no-lock no-error.
                          if avail b-estrutura then
                             assign s-pai = b-estrutura.it-codigo.
                          assign i-linha = CURRENT-RESULT-ROW ("br-table").
                          for each b-estrutura where b-estrutura.it-codigo = s-pai no-lock:
                                                        /*
                                                        put "Passei Antes pi-busca-widget : " string(h-frame4:name) skip
                                                                    string(wh-browse-tit:name) skip.
                                                        
                                                        RUN pi-busca-widget(INPUT "br-table",
                                                          INPUT  h-frame4,
                                                          OUTPUT wh-browse-tit).
                                                        put "Passei Depois pi-busca-widget : " string(h-frame4:name) skip
                                                                    string(wh-browse-tit:name) skip.
                                                        IF VALID-HANDLE(wh-browse-tit) THEN DO:
                                                            /* Pega a query do browser */
                                                            wh-query-tit = wh-browse-tit:QUERY.
                                                            IF VALID-HANDLE(wh-query-tit) THEN DO:
                                                                /* Pega o buffer da query */
                                                                wh-buffer-tit = wh-query-tit:GET-BUFFER-HANDLE(1).
                                                                IF VALID-HANDLE(wh-buffer-tit) THEN DO:
                                                                    /* Primeiro registro da query */
                                                                    wh-query-tit:GET-FIRST().
                                                                    DO WHILE wh-buffer-tit:AVAIL:
                                                                        put  "Campos Browse : " skip
                                                                                wh-buffer-tit:BUFFER-FIELD(1):BUFFER-VALUE  SKIP
                                                                                wh-buffer-tit:BUFFER-FIELD(2):BUFFER-VALUE  SKIP
                                                                                wh-buffer-tit:BUFFER-FIELD(3):BUFFER-VALUE  SKIP
                                                                                wh-buffer-tit:BUFFER-FIELD(4):BUFFER-VALUE  SKIP
                                                                                wh-buffer-tit:BUFFER-FIELD(5):BUFFER-VALUE  SKIP
                                                                                wh-buffer-tit:BUFFER-FIELD(6):BUFFER-VALUE  SKIP
                                                                                wh-buffer-tit:BUFFER-FIELD(7):BUFFER-VALUE  SKIP
                                                                                wh-buffer-tit:BUFFER-FIELD(8):BUFFER-VALUE  SKIP
                                                                                wh-buffer-tit:BUFFER-FIELD(9):BUFFER-VALUE  SKIP
                                                                                wh-buffer-tit:BUFFER-FIELD(10):BUFFER-VALUE SKIP
                                                                                wh-buffer-tit:BUFFER-FIELD(11):BUFFER-VALUE SKIP
                                                                                wh-buffer-tit:BUFFER-FIELD(12):BUFFER-VALUE SKIP
                                                                                wh-buffer-tit:BUFFER-FIELD(13):BUFFER-VALUE SKIP
                                                                                wh-buffer-tit:BUFFER-FIELD(14):BUFFER-VALUE SKIP
                                                                                wh-buffer-tit:BUFFER-FIELD(15):BUFFER-VALUE SKIP
                                                                                wh-buffer-tit:BUFFER-FIELD(16):BUFFER-VALUE SKIP
                                                                                wh-buffer-tit:BUFFER-FIELD(17):BUFFER-VALUE SKIP
                                                                                wh-buffer-tit:BUFFER-FIELD(18):BUFFER-VALUE SKIP
                                                                                wh-buffer-tit:BUFFER-FIELD(19):BUFFER-VALUE SKIP
                                                                                wh-buffer-tit:BUFFER-FIELD(20):BUFFER-VALUE SKIP
                                                                                wh-buffer-tit:BUFFER-FIELD(21):BUFFER-VALUE SKIP
                                                                                wh-buffer-tit:BUFFER-FIELD(22):BUFFER-VALUE SKIP
                                                                                wh-buffer-tit:BUFFER-FIELD(23):BUFFER-VALUE SKIP
                                                                                wh-buffer-tit:BUFFER-FIELD(24):BUFFER-VALUE SKIP.
                                                                               /* VIEW-AS ALERT-BOX INFO BUTTONS OK. */
                                                                        wh-query-tit:GET-NEXT().
                                                                    END.
                                                                END.
                                                            END.
                                                        END.
                                                        */
                             
                              CURRENT-RESULT-ROW("br-table") = i-linha.
                              FIND wb-estrut-lista where
                                   wb-estrut-lista.item-pai   = b-estrutura.it-codigo and
                                   wb-estrut-lista.seq        = b-estrutura.seq and
                                   wb-estrut-lista.item-filho = b-estrutura.es-codigo no-error.
                              if avail wb-estrut-lista then do:
                                 put "Wb-estrut-lista .. " wb-estrut-lista.item-pai " " wb-estrut-lista.item-filho  string(p-row-table) format "x(30)"  " Linha ==> " i-linha  skip.
                                 if wb-estrut-lista.lista-final = yes then
                                    assign h-frame4:ROW = i-linha
                                           h-frame4:screen-value = "Sim".
                                 else
                                    assign h-frame4:ROW = i-linha
                                           h-frame4:screen-value = "Não".
                              end.
                              else do:
                                 assign h-frame4:ROW = i-linha
                                        h-frame4:screen-value = "Não".                         
                              end.
                              assign i-linha = i-linha + 1.
                          end.  
                          /*
                          DEFINE VARIABLE hquery AS HANDLE NO-UNDO.
                          DEFINE VARIABLE hbrowser AS HANDLE NO-UNDO.
    
                          hbrowser = h-frame4.
                          hquery = hbrowser:QUERY.
                          hquery:REPOSITION-TO-ROWID(p-row-table).
    
                          OPEN QUERY q-estrut FOR EACH b-estrutura.
                         
                          */
                         
                          assign h-frame4:visible = yes.
                       end.
                      ASSIGN h-frame4 = h-frame4:NEXT-COLUMN.
                    END.
                    ELSE
                    ASSIGN h-frame4 = h-frame4:first-column.
                 END.
                
              END.
              ASSIGN wh-objeto = wh-objeto:NEXT-SIBLING.
           END.
           ELSE DO:
             ASSIGN wh-objeto = wh-objeto:FIRST-CHILD.
           END.
        END.
    END.
    
    
    IF p-ind-event = "INITIALIZE" and p-ind-object = "BROWSER"
    THEN DO:
        ASSIGN wh-objeto = p-wgh-frame:first-child.
        DO WHILE VALID-HANDLE(wh-objeto):
           IF wh-objeto:TYPE <> "field-group" THEN DO:
              IF wh-objeto:NAME = "br-table" THEN DO:
                 put "Criando Initialize " skip.
                 ASSIGN h-frame4 = wh-objeto:first-column
                        h-frame4 = wh-objeto:ADD-CALC-COLUMN("char","x(4)","   ","LAv",17)
                        h-frame4:name = "lista-avancada"
                        h-frame4:width = 4
                        h-frame4 = wh-objeto:ADD-CALC-COLUMN("char","x(4)","   ","LF",18)
                        h-frame4:name = "lista-final"
                        h-frame4:width = 4
                        h-frame4 = wh-objeto:first-column.                   
             
    /*         
             
    /* para este programa funcionar, basta atribuir handle de um browser para a variavel hbrowser2 */
    DEFINE NEW GLOBAL SHARED VARIABLE hBrowser2 AS HANDLE NO-UNDO.
    
    DEFINE VARIABLE hquery2 AS HANDLE NO-UNDO.
    DEFINE VARIABLE hbuffer AS HANDLE NO-UNDO.
    DEFINE VARIABLE contar AS INTEGER NO-UNDO.
    DEFINE STREAM stCampos.
    DEFINE VARIABLE arquivo AS CHARACTER NO-UNDO.
    hbrowser2 = wh-objeto.
    
    /* se o handle nao for valido, cai fora */
    IF NOT VALID-HANDLE(hBrowser2) THEN
    RETURN.
    
    /* capturar a query do browser */
    hquery2 = hBrowser2:QUERY.
    /* capturar o buffer da query */
    hbuffer = hquery2:GET-BUFFER-HANDLE(1).
    
    /* nome do arquivo */
    arquivo = 'c:\temp\listarcampos.txt'.
    
    OUTPUT STREAM stCampos TO VALUE( arquivo ) CONVERT TARGET 'ISO8859-1'.
    
    /* primeiro registro da query */
    hquery2:GET-FIRST().
    DO WHILE hbuffer:AVAIL:
    
    /* listar todos os campos do buffer */
    REPEAT contar = 1 TO hbuffer:NUM-FIELDS:
    
    EXPORT STREAM stCampos
    hbuffer:BUFFER-FIELD(contar):NAME
    hbuffer:BUFFER-FIELD(contar):DATA-TYPE
    hbuffer:BUFFER-FIELD(contar):FORMAT
    hbuffer:BUFFER-FIELD(contar):BUFFER-VALUE .
    
    END.
    
    /* pular uma linha a cada registro exportado */
    PUT STREAM stCampos SKIP(1).
    
    /* proximo registro da query */
    hquery2:GET-NEXT().
    END.
    
    OUTPUT STREAM stCampos CLOSE.
    /*
    /* pegar os erros */
    CATCH erro AS PROGRESS.Lang.SysError:
    MESSAGE "Ocorreu erro inesperado " erro:getMessage(1)
    VIEW-AS ALERT-BOX ERROR BUTTONS OK.
    END CATCH.
    
    FINALLY:
    MESSAGE 'Execu?Æo completa. Verifique o arquivo ' arquivo
    VIEW-AS ALERT-BOX INFO BUTTONS OK.
    END.
    */
             
    */         
              END.
              ASSIGN wh-objeto = wh-objeto:NEXT-SIBLING.
           END.
           ELSE DO:
             ASSIGN wh-objeto = wh-objeto:FIRST-CHILD.
           END.
        END.
    END.
    
    
    IF p-ind-event = "DISPLAY" AND p-ind-object = "VIEWER" AND c-objeto = "v20in172.w" THEN DO:
       IF p-row-table <> ? THEN DO:
          FIND item WHERE ROWID(item) = p-row-table NO-LOCK.
          ASSIGN wb-c-item = item.it-codigo.
          IF item.it-codigo <> "" THEN DO:
             /* IF bt-wb-valid:HANDLE <> ? THEN ASSIGN bt-wb-valid:SENSITIVE = YES. */
             FIND LAST wb-val-est    WHERE wb-val-est.wbve-item = item.it-codigo NO-LOCK NO-ERROR.
             IF NOT AVAIL wb-val-est THEN ASSIGN wb-situac:SCREEN-VALUE = ""
                                                   wb-situac:BGCOLOR  = 07.
             ELSE                           ASSIGN wb-situac:SCREEN-VALUE  = "VALID."
                                                   wb-situac:BGCOLOR  = 10.                
          END.
       END.
       /* ELSE IF bt-wb-valid:handle <> ? THEN ASSIGN bt-wb-valid:SENSITIVE = NO. */
    END.
    
    
    /*----------------------------- Procedure PI-BUSCA-WIDGET ---------------------------------*/
    
    PROCEDURE pi-busca-widget:
        DEF INPUT  PARAM p-nome     AS CHAR.
        DEF INPUT  PARAM p-frame    AS WIDGET-HANDLE.
        DEF OUTPUT PARAM p-object   AS WIDGET-HANDLE.
        DEF VAR h-frame             AS WIDGET-HANDLE.
        DEF VAR wh-objeto           AS WIDGET-HANDLE.
       
        ASSIGN h-frame = p-frame:FIRST-COLUMN.
    
        DO WHILE VALID-HANDLE(h-frame):
           IF h-frame:TYPE <> "field-group" THEN
               DO:
                   IF h-frame:Type = "frame" THEN
                      DO:
                        RUN pi-busca-widget(INPUT  p-nome,
                                            INPUT  h-frame,
                                            OUTPUT wh-objeto).
                        IF wh-objeto <> ? THEN 
                           DO:
                              ASSIGN p-object = wh-objeto.
                              LEAVE.
                           END.
                      END.
    
                   IF h-frame:NAME = p-nome THEN 
                      DO:
                         ASSIGN p-object = h-frame.
                         LEAVE.
                      END.
    
                   ASSIGN h-frame = h-frame:NEXT-COLUMN.
               END.
           ELSE
                ASSIGN h-frame = h-frame:FIRST-COLUMN.
        END.
    
    END PROCEDURE.
    /*---------------------------------------------------------------------------------------------*/
    
Status do Tópico:
Não esta aberto para novas mensagens.

Compartilhe esta Página