Autor Tópico: [RESOLVIDO] Filtro  (Lida 3549 vezes)

Leonardo Vilani

  • Newbie
  • *
  • Mensagens: 43
  • Karma: +0/-0
[RESOLVIDO] Filtro
« Online: Junho 03, 2014, 08:42:15 am »
Pessoal estou com uma dúvida em relação a filtros, gostaria de aplicar alguns filtros em uma query, porém só que aplicar quando vier alguma coisa no parâmetro, ex:

tenho um atributo com valores S e N, o operador escolhe mostrar apenas os "S" ou "N", e quando quiser ver todos ele nao passa nada.


porem não consegui descobrir se posso alterar a condition via Wlanguage, alguém tem uma outra formar melhor ou uma solução para isso??

Davi

  • Global Moderator
  • *****
  • Mensagens: 426
  • Karma: +0/-0
Re:Filtro
« Responder #1 Online: Junho 03, 2014, 09:19:26 am »
Eu faço isso com query direto ao banco com  HExecuteSQLQuery(datasource, conexao,hQueryWithoutCorrection, sql )

ai vc pode tratar  como quiser a sql e passar para o data source


A verdade é que qualquer coisa avançada que queria fazer, um simples left join....  você não consegue usar o editor de query do windev.

Uso mysql nos projetos e todas as consultas faço com   hQueryWithoutCorrection

juniorschroder

  • Full Member
  • ***
  • Mensagens: 103
  • Karma: +0/-0
Re:Filtro
« Responder #2 Online: Junho 03, 2014, 11:01:27 am »
Leonardo, criando uma Query dentro do windev e executando-a com HExecuteQuery o Windev trata automaticamente os parametros, por exemplo, a query:

SELECT * FROM CLIENTES WHERE NOME = {pNome} AND SOBRENOME = {pSobrenome}

ao executar ela com HExecuteQuery, você pode informar valor pro filtro ou passar Null como parametro, no caso de Null o windev vai ignorar o filtro na Query:

HexecuteQuery(QRY_CLIENTES,hQueryDefault,"Chuck","Norris") vai executar no BD:
SELECT * FROM CLIENTES WHERE NOME = 'Chuck' AND SOBRENOME = 'Norris'

HexecuteQuery(QRY_CLIENTES,hQueryDefault,"Chuck") vai executar no BD:
SELECT * FROM CLIENTES WHERE NOME = 'Chuck'

HexecuteQuery(QRY_CLIENTES,hQueryDefault,Null,"Norris") vai executar no BD:
SELECT * FROM CLIENTES WHERE SOBRENOME = 'Norris'

Abraço

Leonardo Vilani

  • Newbie
  • *
  • Mensagens: 43
  • Karma: +0/-0
Re:[RESOLVIDO] Filtro
« Responder #3 Online: Junho 03, 2014, 05:23:53 pm »
Obrigado deu certo aqui.

Sergio

  • Newbie
  • *
  • Mensagens: 43
  • Karma: +0/-0
Re:[RESOLVIDO] Filtro
« Responder #4 Online: Junho 04, 2014, 09:36:27 am »
// Na tela criei um combobox, dois campos de data e uma tabela que irá receber o resultado da consulta

//No editor de query crio a consulta com uma condição do tipo equal, com o parametro pTipo
//Criei uma condição do tipo between, com o parâmetros pDe e pAte

//Esse código é colocado no initializing da tabela

SWITCH COMBO_Tipo_recebimentos
   CASE 1
      MySource.pTipo = "A"
   CASE 2
      MySource.pTipo = "B"
   CASE 3
      MySource.pTipo = "C"
   CASE 3
      MySource.pTipo = Null  //mostra todos
END

//Em selecting a row do combobox vc acrescenta o código TableDisplay(TABLE_Recebimentos, taInit)

MySource.pDe = EDT_De
MySource.pAte = EDT_Ate

//Adiciono um botão com esse código para mostrar o resultado da pesquisa por data
TableDisplay(TABLE_Recebimentos, taInit)

Somente mais uma sugestão