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:
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.