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

Posicionamento de Tabelas (inicio e Fim)

Discussão em 'Progress 4GL' iniciado por pedro_lemes, Abril 9, 2009.

  1. pedro_lemes

    pedro_lemes Membro Participativo

    Ola !

    Gostaria de saber se possui uma forma de saber se estou posicionado no primeiro registro de uma tabela ou se estou no ultimo.

    Seria algo similar ao Table.bof() e Table.eof() do delphi.

    Alguem sabe ?

    Abraço.
  2. pkr-LL

    pkr-LL Sem Pontuação

    É só colocar um BREAK BY pelo campo chave depois do LOCK e depois verificar o FIRST-OF e LAST-OF
    Ex:
    Código:
        FOR EACH Tabela NO-LOCK BREAK BY Tabela.CampoChave:
    
            IF FIRST-OF(Tabela.CampoChave) THEN
                MESSAGE 'Primeiro Registro'  VIEW-AS ALERT-BOX INFO TITLE 'Informação'.
    
            IF LAST-OF(Tabela.CampoChave) THEN
                MESSAGE 'Último Registro.'  VIEW-AS ALERT-BOX INFO TITLE 'Informação'.
    
        END.
    
  3. pedro_lemes

    pedro_lemes Membro Participativo

    Ola,

    O problema é que não estou dentro de um FOR EACH. Preciso testar após um FIND.

    Abraço.
  4. pkr-LL

    pkr-LL Sem Pontuação

    Find retorna apenas um registro, logo é só testar com AVAIL TABELA
    FIND FIRST TABELA NO-LOCK.
    IF AVAIL TABELA THEN
    1º Registro e último registro.
    ELSE
    Nenhum registro encontrado.

    Se não utilizar o FIRST e existir mais de um registro ele retorna Nenhum registro encontrado.
  5. pedro_lemes

    pedro_lemes Membro Participativo

    Leandro,

    A idéia é a seguinte:

    Imagina que estou num ponto qualquer de uma tabela, onde dou um

    FIND PRIOR tabela NO-LOCK.

    ou

    FIND NEXT tabela NO-LOCK.

    e após isso eu queira saber se estou no primeiro registro ou no último, entende ? O Avail nesse caso sempre vai me retornar TRUE, mesmo que eu esteja no inicio ou fim.

    Abraço.
  6. pkr-LL

    pkr-LL Sem Pontuação

    Pedro,
    Nessa caso desconheço algum Metodo que faça isso.

    Digamos que teria uma forma de resolver:

    Crie uma procedure que receba o rowid e verifique "manualmente" se existe registro antes e depois.

Compartilhe esta Página