SetFilter

SetFilter

Overview

Olá, entusiastas de programação! No post de hoje, vamos mergulhar no mundo do PowerBuilder, explorando como definir um filtro para a DataWindow de maneira eficaz. Com exemplos práticos e dicas valiosas, você vai aprender a manipular dados como um pro! Seja você um desenvolvedor experiente ou alguém que está apenas começando, este guia tem tudo o que você precisa para otimizar suas habilidades de filtragem de dados. Vamos lá?

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:

ArgumentoObrigatórioDescrição
dwcontrolSimDataWindow Control da DW que será filtrada
formatSimString 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.