1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

  2. Anuncie Aqui ! Entre em contato fdantas@4each.com.br

Duvida Relacionar Tabelas

Discussão em 'Progress 4GL' iniciado por Schwanck_v, Dezembro 5, 2023.

  1. Schwanck_v

    Schwanck_v Sem Pontuação

    Boa tarde pessoal!
    Como eu relaciono duas tabelas que não possuem campos/conteúdos semelhantes?

    Estou com dificuldade para relacionar a tabela de natureza do rendimento (natur-rendto) com a tabela principal do meu programa que é a tabela item.

    Se alguém tiver alguma dica/explicação sobre relacionamento de tabelas com for each, First, find...
  2. rafael.andrade

    rafael.andrade Membro Master Moderador Equipe de Suporte

    Em bancos progress não tem relacionamento de tabelas, tipo chave estrangeira, como em outros bancos de dados relacionais, então o relacionamento é lógico e não físico.

    Sendo assim, vc tem que criar o campo chave da outra tabela na sua tabela, e dentro do for each da sua tabela, tu faz p FIND dessa outra tabela.

    Em progress tem também o tal de relacionamento por índice, onde 2 tabelas tem campos com mesmo nome e um índice com esses campos nas duas tabelas, aí dá pra fazer um FOR EACH e FIND FIRST usando o OF, exemplo:

    Código:
    
    FIND FIRST docum-est WHERE [minhaClausulaWhere] NO-LOCK NO-ERROR.
    
    //Lista todos itens da docum-est carregada acima.
    FOR EACH item-doc-est OF docum-est NO-LOCK.
         [Minha Lógica]
    END.
    
    
    Schwanck_v curtiu isso.
  3. Schwanck_v

    Schwanck_v Sem Pontuação

    Com a utilização do WHERE não seria por chave primária e estrangeira? Desculpa, não entendi muito bem a diferença do relacionamento lógico ou físico
  4. Schwanck_v

    Schwanck_v Sem Pontuação

    o OF relaciona as tabelas somente por índices?
    jdchaves curtiu isso.
  5. Schwanck_v

    Schwanck_v Sem Pontuação

    Com o where os conteúdos dos campos das duas tabelas devem ser exatamente iguais?
    jdchaves curtiu isso.
  6. jdchaves

    jdchaves Membro Participativo

    Exato.
    Código:
    
    //imagine que aqui neste ponto, sua tabela principal do seu programa esteja posicionado
    
    FOR EACH natur-rendto NO-LOCK
        WHERE natur-rendto.cod-natur-rendto = nomeDaSuaTabela.nomeDoSeuCampo:
        //aqui irá trazer todos os registros da tabela natur-rendto que encontrar igual ao conteudo do campo da sua tabela
    END.
    
    Schwanck_v curtiu isso.

Compartilhe esta Página