Progress – For Each com ordenação condicional

Existem casos onde é preciso ordenar o resultado de um for each de acordo com a necessidade do usuário.

Uma forma usual seria preparar um for each para cada ordenação que o usuário poderia solicitar.

Para exemplificar segue um for each  de cadastro de cidades onde pode ser ordenado por código ou nome da cidade de acordo com o informado na variável tp-ordem:

define variable tp-ordem as character no-undo.

assign tp-ordem = "cidade".

case tp-ordem:
    when "cidade" then
        for each cidade no-lock
        by cidade.cidade:
            display cidade.estado cidade.cidade.
        end.
    when "estado" then
        for each cidade no-lock
        by cidade.estado:
            display cidade.estado cidade.cidade.
        end.
    otherwise
        for each cidade
        no-lock:
            display cidade.estado cidade.cidade.
        end.
end case.

Agora para simplificar este código usando um simples if no by do for each:

define variable tp-ordem as character no-undo.

assign tp-ordem = "cidade".

for each cidade no-lock
    by if tp-ordem = "cidade" then cidade.cidade else cidade.estado:
    display cidade.estado cidade.cidade.
end.

One thought on “Progress – For Each com ordenação condicional

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.