Váriavel no For each.

Discussão em 'Comandos Básicos' iniciado por diego.neves, Janeiro 17, 2014.

  1. diego.neves

    diego.neves Membro Participativo

    Bom dia.

    Utilizei o comando for each para efetuar uma busca e depois atribui o resultado para uma variável.

    Minha dúvida é a seguinte: Foram atribuidos três valores nesta variavel, como faço para destrinchar "separar" esses valores pois eles irão alimentar meu próximos For each.

    Obrigado.
  2. fdantas

    fdantas Administrator Moderador

    Posta o código pra ficar mais facil do pessoal entender.
  3. diego.neves

    diego.neves Membro Participativo

    Segue abaixo:

    def var c-item as char format "x(16)" extent 10.

    for each estrutura where estrutura.it-codigo = '9140b10006'.

    assign c-item [1] = estrutura.es-codigo.

    disp c-item[1]. /*Aqui ‚ informado trˆs valores*/

    end.

    for each estrutura where estrutura.it-codigo = c-item[1].

    assign c-item [2] = estrutura.es-codigo.
    disp c-item[1] c-item[2]./*aqui mostra somente o ultimo valor*/

    end.
  4. Cobra.cne

    Cobra.cne Equipe de Suporte Moderador

    Olá @diego.neves ,

    Quando estamos utilizando arrays/extent você pode utilizar variáveis para controlar a sequencia, acho que o código abaixo ajuda a entender.

    PHP:
    def var c-item as char format "x(16)" extent 10.
    DEFINE VARIABLE contador 
    AS INTEGER    NO-UNDO.


    for 
    each estrutura where estrutura.it-codigo = '9140b10006':

        
    ASSIGN contador          = contador + 1
              c
    -item [contador] = estrutura.es-codigo. 
        
    disp c-item[contador]. /*Aqui ‚ informado trˆs valores*/

    end.

    for 
    each estrutura where estrutura.it-codigo = c-item[contador]:

        
    ASSIGN contador          = contador + 1.
              c
    -item [contador] = estrutura.es-codigo.
        
    disp c-item[contador]. /*aqui mostra somente o ultimo valor*/

    end.
    Se ainda não era bem isso tenta explicar a estrutura que quer montar, talvez possamos dar outras dicas.

    Abs.
  5. diego.neves

    diego.neves Membro Participativo

    Bom dia Cleinton.

    Estou tentando que o resultado de um for each, seja a clausula do próximo for each até finalizar.
    Achei uma situação que tem três valores, ele deveria alimentar o proximo for each com estes três, mas só informa o ultimo.
  6. Cobra.cne

    Cobra.cne Equipe de Suporte Moderador

    Bom dia,

    Talvez algo assim, fosse melhor, mas dependo do que vc vai fazer com os registros, poderia ser feito só um find first um can-find outros itens que melhorarem a performance, mas usando buffer também é possível navegar na mesma tabela.
    Código:
    DEFINE VARIABLE c-item AS CHARACTER  NO-UNDO.
    DEFINE BUFFER b1-estrutura FOR estrutura.
    DEFINE BUFFER b2-estrutura FOR estrutura.
    
    
    for each b1-estrutura
        where b1-estrutura.it-codigo = '9140b10006':
    
        ASSIGN c-item = b1-estrutura.es-codigo.
    
        for each b2-estrutura
            where b2-estrutura.it-codigo = b1-estrutura.es-codigo:
       
            ASSIGN c-item = b2-estrutura.es-codigo.   
        end.
    
        DISP c-item.
    END.
    
    Olha se melhora.

Compartilhe esta Página