Consulta por filtros

Boa tarde amigos.

Estou com dificuldade em criar um filtro para consulta com variáveis além de data.
Já criei o filtro com data e está funcionando, agora preciso colocar mais dois campos para o usuário digitar no filtro e caso ele não queira o filtro coloque um caracter ex % no campo e consulta a tabela toda.
Ex usuário irá colocar data de início e fim e número de ordem (campo setpoint (inteiro)) e número linha (campo setpoint(inteiro)), caso queira apenas data e hora deixaria em branco os demais setpoint ou colocaria o caracter % q ja utlizamos em outra aplicação como padrão.
Agradeço pelo apoio

2 Likes

Bom dia @Bruno_Ferreira,

Esse artigo mostra como fazer algo muito parecido ao que você quer:
https://kb.elipse.com.br/kb32470-habilitando-ou-desabilitando-filtros-de-uma-consulta/

Para manter o padrão que vocês usam, pode substituir o valor booleano no IF, pelo caractere ‘%’ do Setpoint.

Bom dia @AlecsonDidone, obrigado pela resposta.
Ja tinha lido esse tópico mas nao consegui entender.
Sei que vou precisar criar mais variaveis no campo consulta, mas nao sei como fazer isso ligado aos setpoints.

Ok Bruno,
Vou alterar o exemplo do artigo e já te passo o Script adaptado que usei.

Consegui Fazer com as variaveis buscando o numero dos setpoints mas ainda falta a opcao de quando nao quiser preencher esses variaveis.


@Bruno_Ferreira,
Segue como ficou, para verificar:

O que alterei foi o seguinte:

if Screen.Item(“SetPoint1”).Value = “%” or Screen.Item(“SetPoint1”).Value = “” then
alloperators = 1
else
alloperators = 0
end if

Isso atribui à variável alloperators o valor 1 se o caractere “%” for inserido no setpoint do filtro. Se for digitado um valor diferente, o filtro ignora a flag e age normalmente filtrando pelo valor inserido.

Abaixo como a variável inserida na consulta foi setada:

set bquery = browser.Item(“Query1”)
bquery.SetVariableValue “AllOperators”, alloperators

E aqui foi ajustada a variável como um flag do tipo inteiro:

Ok, vou aplicar aq e posto o resultado.
Muito obrigado pela atenção

1 Like

como q declara essa variavel la na consulta, essa parte nao conheço?

image

Quando você edita o código SQL e indica a variável, como na figura, a variável é criada.


image

Porém deve ser respeitada a seguinte sintaxe para o tipo de dados da variável:

Segue o link com a aplicação exemplo, que pode ajudar:
AppExKBFiltro

Boa noite.

Esta funcionando parcialmente, não consegui encontrar o erro.
Quando coloco dado no campo “NumeroOrdem” ele filtra certinho, porem quando deixo vazio ou cm “%”, ele aparece a consulta em branco, sem nenhum dado, coloquei um campo para monitorar a variavel NumeroOrdemClear, que recebe o valor 1 ou 0 e ela troca os valor normal qd coloco valores ou deixo em branco, porem a consulta nao funciona.
Ao inves de colocar um botao para consulta, coloquei o scrip direto na tela no comando KeyUp.
Segue imagens abaixo de como ficou:

Quando simulo direto na consulta, esta funcionando normal.



image

@Bruno_Ferreira,

Parece estar ok. Esse evento KeyUp da tela não costuma ser usado para essa situação, porém você mostrou que está gerando o evento porque muda o valor da flag, então parece estar funcionando.

Peço que tente forçar o tipo das variáveis na configuração da consulta, assim como no print:
image

Qual é o Banco de Dados que você está usando?

Banco Access, forçando direto na consulta esta funcionando normalmente.

Se possível, me envie a sua aplicação (arquivos .prj, .dom, e o .mdb) para o email alecson@elipse.com.br

Boa tarde @Bruno_Ferreira,

Se a idéia é filtrar com WildCards, você pode usar o operador LIKE ao invés do operador = na instrução SQL.

Exemplo:
Select * from Pallet Where NumeroOrdem Like '<%NumOrdem%>' And NumeroLinha Like '<%NumLinha%>'

Como você está utilizando o Access, o Wildcard para qualquer caracter é o *. Se for usar o SQL Server, você deve utilizar o %.