1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.
  2. Anuncie Aqui
    Anuncie aqui você Também: fdantas@4each.com.br

Parametro no for each

Discussão em 'Progress 4GL' iniciado por lwazevedo, Dezembro 12, 2012.

  1. lwazevedo

    lwazevedo Membro Ativo

    Ta certo...vou fazer e torno a postar aqui o resultado.

    mais uma vez obrigado.
  2. jaozi_nho

    jaozi_nho Membro Participativo

    Estava hoje com esse problema, achei 1 solução que sempre funciona, ele da 1 open query e refresh.

    Código:
    OPEN QUERY brtt-resumoLinha 
            FOR EACH tt-resumoLinha 
            no-lock by tt-resumoLinha.cod-linha.
    
    {&open-query-brtt-resumoLinha }
    
    aonde brtt-resumoLinhaé o nome do browser.

    Abraço.
  3. lwazevedo

    lwazevedo Membro Ativo

    Caros amigos, tentei de todos as maneiras mas não consegui fazer funcionar. vou tentar explicar melhor aqui o que estou tentando fazer.

    bom tenho um programa .w onde tenho um frame que contem alguns botões, um fill-in e um browse.

    funciona desta forma, o usuario digita o nome da tabela do banco no fill-in é apos fazer isso clica no btn-imprime, depois ele executa o seguinte código.

    /*Coloca o valor do fill-in na variavel c-tabela*/
    ASSIGN c-tabela = input fill-in-2.

    /* cria um buffer para usar na query */
    CREATE BUFFER h-buffer FOR TABLE c-tabela.

    /* cria a query conforme a variavel */
    CREATE QUERY h-query.
    h-query:SET-BUFFERS(h-buffer).
    h-query:QUERY-PREPARE("for each " + c-tabela).
    h-query:QUERY-OPEN.

    /*colocar o valor da query no browser que já existe no frame.*/

    h-query:QUERY-CLOSE().
    /*enable all with frame A.*/


    DELETE OBJECT h-query.
    DELETE OBJECT h-buffer.


    então a query está funcionando eu só preciso colocar o resultado no browse que já existe no frame, ja tentei
    todas as formas que postaram aqui, mas não esta dando certo.

    gostaria de contar com ajuda de vocês mais uma vez.

    grato
  4. jalegria

    jalegria Membro Participativo

    com o codigo que eu passei não deu certo?
    aqui funcionou...

    vc não pode colocar o codigo aqui?
  5. lwazevedo

    lwazevedo Membro Ativo

    Tentei fazer conforme você fez mas não rolou....
    e pelo que eu vejo você cria o browse e adiciona no frame, e no meu
    caso eu já tenho o browser pronto no frame.

    como posso fazer. ?
  6. jalegria

    jalegria Membro Participativo

    altera o programa na definição do browse
    retira a definição da query e do display do browse
    qdo vc rodar vai aparecer um browse em branco

    aí vc faz igual no codigo q te passei, mas sem criar um browse

    Testei aqui e foi
    dá uma olhada
    Código:
    &Scoped-define WINDOW-NAME C-Win
    
    CREATE WIDGET-POOL.
    
    /* ***********************  Control Definitions  ********************** */
    
    /* Define the widget handle for the window                              */
    DEFINE VAR C-Win AS WIDGET-HANDLE NO-UNDO.
    
    /* Definitions of the field level widgets                               */
    DEFINE BUTTON bt-teste1 LABEL "Tabela1" SIZE 15 BY 1.14.
    DEFINE BUTTON bt-teste2 LABEL "Tabela2" SIZE 15 BY 1.14.
    
    /* Browse definitions                                                   */
    DEFINE BROWSE br-teste WITH NO-ROW-MARKERS SEPARATORS SIZE 75 BY 11.67.
    
    /* ************************  Frame Definitions  *********************** */
    
    DEFINE FRAME DEFAULT-FRAME
         bt-teste1 AT ROW 1.48 COL 3
         bt-teste2 AT ROW 1.48 COL 20
         br-teste AT ROW 4.33 COL 3
        WITH 1 DOWN NO-BOX KEEP-TAB-ORDER OVERLAY SIDE-LABELS NO-UNDERLINE 
             THREE-D AT COL 1 ROW 1 SIZE 80 BY 16.
    
    /* *************************  Create Window  ************************** */
    
    IF SESSION:DISPLAY-TYPE = "GUI":U THEN
      CREATE WINDOW C-Win ASSIGN
             HIDDEN             = YES
             TITLE              = "<insert window title>"
             HEIGHT             = 16
             WIDTH              = 80
             MAX-HEIGHT         = 16
             MAX-WIDTH          = 80
             VIRTUAL-HEIGHT     = 16
             VIRTUAL-WIDTH      = 80
             RESIZE             = yes
             SCROLL-BARS        = no
             STATUS-AREA        = no
             BGCOLOR            = ?
             FGCOLOR            = ?
             KEEP-FRAME-Z-ORDER = yes
             THREE-D            = yes
             MESSAGE-AREA       = no
             SENSITIVE          = yes.
    ELSE {&WINDOW-NAME} = CURRENT-WINDOW.
    
    /* ***********  Runtime Attributes and AppBuilder Settings  *********** */
    
    IF SESSION:DISPLAY-TYPE = "GUI":U AND VALID-HANDLE(C-Win)
    THEN C-Win:HIDDEN = no.
    
    /* ************************  Control Triggers  ************************ */
    
    &Scoped-define SELF-NAME C-Win
    ON END-ERROR OF C-Win OR ENDKEY OF {&WINDOW-NAME} ANYWHERE DO:
      IF THIS-PROCEDURE:PERSISTENT THEN RETURN NO-APPLY.
    END.
    
    ON WINDOW-CLOSE OF C-Win
    DO:
      APPLY "CLOSE":U TO THIS-PROCEDURE.
      RETURN NO-APPLY.
    END.
    
    &Scoped-define SELF-NAME bt-teste1
    ON CHOOSE OF bt-teste1 IN FRAME DEFAULT-FRAME
    DO:
      RUN Teste("classe-ex").
    END.
    
    &Scoped-define SELF-NAME bt-teste2
    ON CHOOSE OF bt-teste2 IN FRAME DEFAULT-FRAME
    DO:
      RUN Teste("app").
    END.
    
    &UNDEFINE SELF-NAME
    
    /* ***************************  Main Block  *************************** */
    
    ASSIGN CURRENT-WINDOW                = {&WINDOW-NAME} 
           THIS-PROCEDURE:CURRENT-WINDOW = {&WINDOW-NAME}.
    
    ON CLOSE OF THIS-PROCEDURE RUN disable_UI.
    PAUSE 0 BEFORE-HIDE.
    
    MAIN-BLOCK:
    DO ON ERROR   UNDO MAIN-BLOCK, LEAVE MAIN-BLOCK
       ON END-KEY UNDO MAIN-BLOCK, LEAVE MAIN-BLOCK:
      RUN enable_UI.
      IF NOT THIS-PROCEDURE:PERSISTENT THEN WAIT-FOR CLOSE OF THIS-PROCEDURE.
    END.
    
    /* **********************  Internal Procedures  *********************** */
    
    PROCEDURE disable_UI :
      IF SESSION:DISPLAY-TYPE = "GUI":U AND VALID-HANDLE(C-Win)
      THEN DELETE WIDGET C-Win.
    
      IF THIS-PROCEDURE:PERSISTENT THEN DELETE PROCEDURE THIS-PROCEDURE.
    END PROCEDURE.
    
    PROCEDURE enable_UI :
      ENABLE bt-teste1 bt-teste2 br-teste WITH FRAME DEFAULT-FRAME IN WINDOW C-Win.
      VIEW C-Win.
    END PROCEDURE.
    
    PROCEDURE Teste :
    
      DEF INPUT PARAM t AS CHAR.
    
      def var q as handle.
      def var b as handle.
    
      create buffer b for table t.
    
      create query q.
      q:add-buffer(b).
      q:query-prepare('for each ' + t + ' no-lock').
      q:query-open.
    
      br-teste:QUERY IN FRAME DEFAULT-FRAME = q.
      br-teste:ADD-COLUMNS-FROM(t).
    
    END PROCEDURE.
    

Compartilhe esta Página