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

Urgente Juntar duas Temp-table

Discussão em 'Progress 4GL' iniciado por AndersonApdo, Dezembro 26, 2013.

  1. AndersonApdo

    AndersonApdo Membro Participativo

    Boa tarde, na aplicação a seguir eu gostaria de unir duas temp-table, pois farei duas consultar no banco e preciso que seja retornado um unico dataset com estas duas consultas.

    Código:

    Código:
    FOR EACH pim_aprovador
        WHERE pim_aprovador.pim_ccusto      = "70100"
              AND pim_aprovador.pim_cod_estab = "uju"
              AND pim_aprovador.pim_dt_fim      = ?
              AND pim_aprovador.pim_nivel          > 1 NO-LOCK :
     
        CREATE tt_teste_um.
        ASSIGN tt_teste_um.cCodAprovCc  = string(pim_aprovador.pim_cod_usuario).
    
    DISP tt_teste_um.
     
    END.
    Na segunda condição vou fazer a mesma consulta só que com um ccusto diferente:

    Código:
    FOR EACH pim_aprovador
        WHERE pim_aprovador.pim_ccusto      = "50600"
              AND pim_aprovador.pim_cod_estab = "uju"
              AND pim_aprovador.pim_dt_fim      = ?
              AND pim_aprovador.pim_nivel          > 1 NO-LOCK :
     
        CREATE tt_teste_dois.
        ASSIGN tt_teste_dois.cCodAprovCc  = string(pim_aprovador.pim_cod_usuario).
    
    DISP tt_teste_dois.
     
    END.

    Preciso unir estas duas temp-table e ter em mãos os dois valores armazenado nelas.

    Alguém sabe como posso fazer isso?

    Agradeço desde já a atenção.
  2. Agnaldo

    Agnaldo Membro Ativo

    Deve ter alguma coisa à mais nesses exemplos acima mas, se for apenas isso, acho que fica mais simples fazer uma passada única.
    PHP:
    FOR EACH pim_aprovador WHERE (pim_aprovador.pim_ccusto = "50600" OR pim_aprovador.pim_ccusto = "70100") AND
                                  
    pim_aprovador.pim_cod_estab = "uju" AND
                                  
    pim_aprovador.pim_dt_fim    = ? AND
                                  
    pim_aprovador.pim_nivel     > 1 NO-LOCK:

        
    FIND FIRST tt WHERE tt.cCodAprovCc = STRING(pim_aprovador.pim_cod_usuario) NO-ERROR.
        IF 
    NOT AVAILABLE tt
          THEN
              
    DO:
                 
    CREATE tt.
                 
    ASSIGN tt.cCodAprovCc = STRING(pim_aprovador.pim_cod_usuario).
              
    END.
    END.
    Mas se precisar mesmo fazer em duas passadas, use a mesma temp para ambas.
    PHP:
    FOR EACH pim_aprovador WHERE pim_aprovador.pim_ccusto = "50600" AND
                                 
    pim_aprovador.pim_cod_estab = "uju" AND
                                 
    pim_aprovador.pim_dt_fim    = ? AND
                                 
    pim_aprovador.pim_nivel     > 1 NO-LOCK:

        
    FIND FIRST tt WHERE tt.cCodAprovCc = STRING(pim_aprovador.pim_cod_usuario) NO-ERROR.
        IF 
    NOT AVAILABLE tt
          THEN
              
    DO:
                 
    CREATE tt.
                 
    ASSIGN tt.cCodAprovCc = STRING(pim_aprovador.pim_cod_usuario).
              
    END.
    END.

    FOR 
    EACH pim_aprovador WHERE pim_aprovador.pim_ccusto = "70100" AND
                                 
    pim_aprovador.pim_cod_estab = "uju" AND
                                 
    pim_aprovador.pim_dt_fim    = ? AND
                                 
    pim_aprovador.pim_nivel     > 1 NO-LOCK:

        
    FIND FIRST tt WHERE tt.cCodAprovCc = STRING(pim_aprovador.pim_cod_usuario) NO-ERROR.
        IF 
    NOT AVAILABLE tt
          THEN
              
    DO:
                 
    CREATE tt.
                 
    ASSIGN tt.cCodAprovCc = STRING(pim_aprovador.pim_cod_usuario).
              
    END.
    END.
    De toda forma, usar a mesma temp resolveria o teu problema.
    Última edição: Dezembro 26, 2013
    AndersonApdo curtiu isso.
  3. AndersonApdo

    AndersonApdo Membro Participativo

    Perfeito Agnaldo, resolveu meu problema.

Compartilhe esta Página