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

Query básica com condição

Discussão em 'Progress 4GL' iniciado por bruno_mps, Novembro 26, 2009.

  1. bruno_mps

    bruno_mps Sem Pontuação

    Olá pessoal.. estou precisando de uma ajuda bem básica.
    Sou novo no assunto.

    Preciso relacionar 3 tabelas porém exibir no Display campos de apenas 2 tabelas mediante uma condição. Vejam a lógica abaixo.. acho que dá para entender.

    FOR EACH TABELA 1

    SE TABELA1.CHAVE = TABELA2.CHAVE

    ENTÃO

    DISP TABELA1.CHAVE
    TABELA2.CHAVE

    SENÃO

    DISP TABELA1.CHAVE
    TABELA3.CHAVE

    END.


    Abraços
  2. Cobra.cne

    Cobra.cne Equipe de Suporte Moderador

    Bom dia,

    Tenta desta forma:
    Código:
    For each tabela1 no-lock:
      find first tabela2 no-lock
         where tabela2.chave = tabela1.chave no-error.
    
      if avail tabela2 then
          disp tabela1.chave tabela2.chave.
      else
      do:
        find first tabela3 no-lock
          where tabela3.chave = tabela1.chave no-error. 
      if avail tabela3 then
          disp tabela1.chave tabela3.chave.
      end.
    end.
    Como você não mencionou a pesquisa da tabela3 eu deduzi desta forma.

    Qualquer coisa posta mais informações.

    T+
  3. TrombiniSP

    TrombiniSP Membro Participativo

    Nâo ficou claro mas pra mim vc tem problemas em exbir os dados porque depende dos mesmos para realizar a "condição" que determina ou não. Passe o problema todo e onde vc pretende chegar, ficaria mais facil.

    Nâo sendo isso ou é coisa pior eu nem deveria ser dúvida, pois, usar IF, DISPLAY, etc. é basico demais. IMO
  4. bruno_mps

    bruno_mps Sem Pontuação

    Opa obrigado!
    A questão é básica mesmo. Ainda estou me familiarizando com a sintaxe progress e fixando conhecimento.
    Rodou de boa por aqui.

    O meu próximo passo é definir variavel para input de dados.
    O Programa será rodado e o usuário irá informar parâmetros do tipo data e estabelecimento por exemplo.

    Alguém pode me dar um help quanto a esse ponto? de informe de parâmetros com um exemplo prático.

    Vou verificar o material que tenho aqui.

    mto Obrigado!
  5. deproenca

    deproenca Membro Participativo

    vc pode fazer assim:

    Código:
    def var dt-data as date.
    def var cod-estab as char. /* ou int */
    
    update dt-data
               cod-estab.
    
    For each tabela1 no-lock
          where tabela.data     = dt-data
             and tabela.estab    = cod-estab:
    
      find first tabela2 no-lock
         where tabela2.chave = tabela1.chave no-error.
            
      if avail tabela2 then
          disp tabela1.chave tabela2.chave.
      else
      do:
        find first tabela3 no-lock
          where tabela3.chave = tabela1.chave no-error. 
      if avail tabela3 then
          disp tabela1.chave tabela3.chave.
      end.
    end.
    
    

Compartilhe esta Página