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

find com nome da tabela armazenda

Discussão em 'Progress 4GL' iniciado por RoseLuedtke, Fevereiro 1, 2010.

  1. RoseLuedtke

    RoseLuedtke Sem Pontuação

    Pessoal,
    Preciso fazer um find em uma tabela, que o nome dela está armazenada em uma temp-table, como faço para fazer este find?
    Ou seja, tenho uma tt-xxx.tabela = "edificio " e preciso dar um find em edificio ...
    Alguém sabe?
  2. williamsrcosta

    williamsrcosta Membro Participativo

    find tt-xxx.tabela where tt-xxx.tabela = 'edificio'.
  3. RoseLuedtke

    RoseLuedtke Sem Pontuação

    não William, preciso dar um find na tabela "Edificio".
  4. Cobra.cne

    Cobra.cne Equipe de Suporte Moderador

    Se puder explicar melhor a finalidade dos resultados, porque depende sempre das suas saídas para saber como podería ser feito.

    Talvez poderia ser utilizado uma include mais ou menos assim:
    Código:
    {include_find.i tt-xxx.tabela } 
    e na include_find.i
    Código:
    find first {&1} no-lock.
    disp {&1}
    acho que seria mais ou menos assim, porém onde estou não tenho como testar agora.

    []'s
  5. LimBh

    LimBh Sem Pontuação

    Veja se é isso que precisa:

    DEFINE VARIABLE str-cmd AS CHARACTER FORMAT "x(100)" NO-UNDO.
    DEFINE TEMP-TABLE tt-teste NO-UNDO FIELD nome-tab AS CHAR FORMAT "x(20)"
    FIELD nome-campo AS CHAR FORMAT "x(20)".
    CREATE tt-teste.
    ASSIGN nome-tab = 'Order'
    nome-campo = 'Order.Cust-Num'.

    OUTPUT TO c:/temp/prog-tab.p.

    FIND FIRST tt-teste WHERE tt-teste.nome-tab = 'Order' NO-LOCK NO-ERROR.
    IF AVAIL tt-teste THEN DO:
    str-cmd = 'Find First ' + trim(tt-teste.nome-tab) + ' where ' + trim(tt-teste.nome-campo) + ' > 0 no-lock no-error.'.
    PUT str-cmd AT 1.
    str-cmd = 'If avail ' + trim(tt-teste.nome-tab) + ' then display ' + trim(tt-teste.nome-tab) + '.'.
    PUT str-cmd AT 1.
    END.
    OUTPUT CLOSE.

    RUN c:\temp\prog-tab.p.

    Espero ter ajudado.

    Abraço

    LimBh :)
  6. pitsa

    pitsa Membro Participativo

    Também pode usar query dinamicas, tem um bom desempenho mas é um pouco mais complexo para utilizá-las... mas no seu caso irá servir muito bem...

    Código:
    
    def var h_buffer as handle no-undo.
    def var h_query as handle no-undo.
    def var h_field as handle no-undo.
    
    def var l_status as logical no-undo.
    
    def var c_tabela as char no-undo.
    def var c_filtro as char no-undo.
    assign
        c_tabela = "ped-venda"
        c_filtro = "ped-venda.nome-abrev = 'PROAQUA'".
    
    create buffer h_buffer for table c_tabela buffer-name c_tabela.
        
    create query h_query.
        
    h_query:set-buffers(h_buffer).
        
    l_status = h_query:query-prepare("for each " + c_tabela + " no-lock" +
            if c_filtro <> ''
            then " where " + c_filtro
            else "") no-error.
        
    if not l_status or error-status:error
    then do:
        message "ERROR:" + error-status:get-message(1) view-as alert-box.
        return.
    end.
        
    h_query:query-open.
    h_query:get-next().
        
    do while not h_query:query-off-end:
        
        h_field = h_buffer:buffer-field("nome-abrev"). /* sequencia do campo na tabela */
    
        message "Campo " h_field:name " Valor " h_field:buffer-value
            view-as alert-box.
    
        h_query:get-next().
    
    end.
    
    delete object h_query.
    delete object h_buffer.
    
    
    

Compartilhe esta Página