[Tutorial] Mostrando apenas linhas únicas na DataWindow (PowerBuilder)

A resposta obvia para este post seria: Utilize o DISTINCT na hora de fazer o select no banco.  Infelizmente, a vida nem sempre é tão simples assim. O que mostro neste post é uma forma alternativa (e mais trabalhosa do que utilizar o distinct), mas que vai te dar um caminho a mais para conseguir este resultado.

Para contextualizar, imagine uma Datawindow com o seguinte select:

Como as colunas de ID costumam a ser únicas, vamos mostrar eliminar linhas de clientes que tenham o nome (cli_nome) duplicado.

Os passos que devem ser feitos para conseguir isso são:

1.Vamos fazer com que a Datawindow parece de se atualizar visualmente, para ganharmos performance:

2.Agora vamos ordenar a Datawindow pelas colunas que serão utilizadas.

 

3.O próximo passo é criar uma expressão para filtrar a DataWindow. Ela que será responsável por encontrar e esconder as linhas que serão consideradas como duplicadas.

 

4.Neste momento sua Datawindow já está filtrada, mas lembre-se que desligamos as atualizações visuais. Então agora temos que liga-las novamente.

 

Se você quiser utilizar mais uma coluna para verificar se a linha é duplicada ou não, basta acrescenta-la nas expressões de sort e filter.

Dica: Se você utilizar uma função que faça apenas este processamento na Datawindow, para fins de organização do fonte, você pode utilizar o comando post, para “agendar” o SetRedraw(true). Exemplo:

O comando dw_1.post SetRedraw(true) faz uma espécie de agendamento daquele comando. Ele será executado assim que o evento ou função atual acabarem. Isso ajuda em termos de organização do fonte, pois você mantem coisas similares agrupadas e não corre o risco de esquecer de ligar o SetRedraw no final da função/evento.

 

Espero ter ajudado.

The following two tabs change content below.
Breno RdV
Ex-Psicólogo, com quase uma década de experiência em Recursos Humanos e Gestão de Pessoas, atual desenvolvedor e Analista de Sistemas, trabalhando com PowerBuilder, C#, PowerShell e expandindo horizontes para Python, Xamarin, PHP, Angular e (por que não?) Unity.

Comments

comments

Posted in Dev, PowerBuilder and tagged , , .