SetFilter

Define um filtro para a DataWindow

Sintaxe:

dwcontrol.SetFilter(format)

 

Retorno:

  • 1 – Sucesso;
  • -1 – Se ocorreu algum erro ou se não foi especificado nenhum DataObject na DataWindow;

 

Destalhes sobre a função!

Appeon: Função suportada sem restrições.

  • Após recuperar os dados (retrieve) e aplicar o filtro, as linhas que atenderem os critérios serão automaticamente transferidos do buffer Primary! para o buffer Filter!.
  • O método SetFilter substitui o filtro existente na DataWindow;
  • Os filtros devem ser operações que utilizam as colunas e devem resultar em um indicador booleano (true ou false);
  • São aceitos somente os operadores lógicos AND e OR. NOT não é suportado.
  • As comparações dos filtros são feitas em ordem alfabética, no exemplo abaixo, o filtro retornará todas as linhas cuja segunda coluna começa com A, a B ou b.
long ll_ret
string ls_filtro 

ls_filtro = "#2 >= 'a' and #2 < 'c'"
ll_ret = dw_1.setFilter(ls_filtro)
  • Se quiser que o filtro faça a pesquisa utilizando a ordenação ASCII ao invés da ordem alfabética, utilize \s no final do filtro. O exemplo abaixo retorna linhas cuja segunda coluna comece com a ou b, pois na tabela ASCII, as letras maiusculas e minusculas estão listadas separadamente.
long ll_ret
string ls_filtro 

ls_filtro = "#2 >= 'a' and #2 < 'c' \s"
ll_ret = dw_1.setFilter(ls_filtro)
  • Para fazer com que o usuário insira um filtro para a datawindow, passe uma variável nula, do tipo string. (Isso não funciona para DataStores, apenas para DataWindow);
  • As configurações regionais não alteram a formatação dos números (ou moedas);
  • Para utilizar os caracteres % ou _ em uma string filtro, você deve usar o caractere  de escape, veja o exemplo abaixo:
string ls_filtro
long ll_ret

ls_filtro = ~'%oa15progress%~'
ll_ret = dw_1.setFiltro(ls_filtro)
  • Para remover um filtro, chame a função SetFilter passando uma string vazia.

Como utilizar:

Exemplo 01: Filtra DW_1, retornando as linhas onde a coluna 2 possua valores entre 100 e 1000.

long max_qty, min_qty
min_qty = 100
max_qty = 1000
dw_1.SetFilter("#1="+ String( min_qty) + " and #2=" + String(max_qty))

 

Argumentos:

Argumento Obrigatório Descrição
dwcontrol Sim DataWindow Control da DW que será filtrada
format Sim String contendo a expressão utilizada para o filtro.

Referência:

 

Dúvidas sobre  o artigo? Sugestões? Precisa de ajuda com outra funcionalidade do PowerBuilder? Deixe um comentário.

The following two tabs change content below.
Arquiteto de Software e Desenvolvedor Backend (quase Fullstack), geralmente trabalho com C#, PowerShell, Python, Golang, bash e Unity (esse é mais por hobby). Estou sempre buscando algo novo para aprender, adicionando novas ferramentas ao meu cinto de utilidades.
Posted in Dev, PowerBuilder and tagged , , , , , .