Oferta Limitada! 40% OFF para compra e renovaÇÃo. Comprar agora

Autor Tópico: Filtrar informações  (Lida 1042 vezes)

flbasto

  • Iniciante
  • **
  • Mensagens: 53
    • Email
Filtrar informações
« Online: Janeiro 27, 2015, 10:02:38 am »
Boa tarde, tenho uma aplicação de controle que é um filtro, com essas informações eu abro um grid. Porém, gostaria de saber como eu faço isso, pois tenho 5 campos, e o grid vai filtrar apenas se os 5 forem verdadeiros.. Eu gostaria que o usuario tivesse liberdade para escolher um ou dois atributos, e mesmo que ele deixasse os outros sem selecionar o grid filtrasse somente as opções escolhidas, alguem pode me ajudar?

megh

  • Visitante
Re:Filtrar informações
« Responder #1 Online: Janeiro 27, 2015, 10:32:23 am »
Você pode criar uma variável na grid sendo o where.
Exemplo
Where [var_where_vindodocontrole]

E no controle no onValidade você verifica qual campo foi preenchido e vai montando o valor da query (guardando em outro campo).
Exemplo

controle campo código, nome, campo1, campo2, campo3

on Validate

// criado para guardar o valor do where final
{campo}  = " 1=1 "; //iniciando o campo asim as demais condições entram sempre como and
if(!empty({nome}))
{
   {campo} .= " AND nome like '{nome}%' ";
}
if(!empty({campo1}))
{
   {campo} .= " AND camposql = '{campo1}' ";
}
e assim por diante

Depois edite a ligação control -> grid

irá pedir parâmetro para var_where_vindodocontrole e você passa aquele campo que acumulou o valor. //chamei de campo

flbasto

  • Iniciante
  • **
  • Mensagens: 53
    • Email
Re:Filtrar informações
« Responder #2 Online: Janeiro 27, 2015, 12:10:03 pm »
Valeuu! Ajudou muito mesmo, mas só mais uma dúvida, como deixar como padrão um campo em branco em um field do tipo Select? Porque ele já vem com um valor (o primeiro do banco), eu gostaria que o primeiro fosse empty para poder fazer isso. Obrigado pela atenção.

megh

  • Visitante
Re:Filtrar informações
« Responder #3 Online: Janeiro 27, 2015, 12:18:50 pm »
Coloque usar título = sim e escreva algo como Selecione no campo ao lado.

flbasto

  • Iniciante
  • **
  • Mensagens: 53
    • Email
Re:Filtrar informações
« Responder #4 Online: Janeiro 27, 2015, 12:48:15 pm »
Não sei se a sintaxe esta errada, mas não me retorna nenhum registro, o que pode estar errado?

{campo}  = " 1=1 ";

if(!empty({trator}))
{
   {campo} .= " AND cod_tr = '{trator}' ";
}
if(!empty({colheita}))
{
   {campo} .= " AND cod_co = '{colheita}' ";
}
if(!empty({caminhao}))
{
   {campo} .= " AND cod_ca = '{caminhao}' ";
}
if(!empty({mt_colhei}))
{
   {campo} .= " AND mt_colheitadeira = '{mt_colhei}' ";
}
if(!empty({mt_cavalo}))
{
   {campo} .= " AND mt_cavalo = '{mt_cavalo}' ";
}
if(!empty({mt_trator}))
{
   {campo} .= " AND mt_trator = '{mt_trator}' ";
}
   
[variavel_where_composta] = {campo};
   
sc_redir(grid_balancaTransacao);

////////////////////////////////////////////////////////////////////////////////////////////////////////////////

E no grid fiz o seguinte select

SELECT
   id,
   cod_tr,
   cod_co,
   cod_ca,
   carreta_01,
   carregamentoTRA1,
   carreta_02,
   carregamentoTRA2,
   mt_colheitadeira,
   mt_cavalo,
   mt_trator,
   data_inicio,
   data_final,
   hora_inicio,
   hora_final,
   latitude_conexao_tr_co,
   longitude_conexao_tr_co,
   latitude_conexao_tr_ca,
   longitude_conexao_tr_ca,
   status,
   id_identificacao_co,
   id_identificacao_ca,
   dataInsertBalanca,
   idTransacao_RaspCampo,
   propriedade,
   id_pacote
FROM
   balancaTransacao
WHERE
   '[var_where_composta]'

flbasto

  • Iniciante
  • **
  • Mensagens: 53
    • Email
Re:Filtrar informações
« Responder #5 Online: Janeiro 27, 2015, 12:54:59 pm »
Erro ao acessar o banco de dados
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'tr6655' '' at line 1
select count(*) from balancaTransacao where ' 1=1 AND cod_tr = 'tr6655' '

Tirei então as ' ' dos campos {}.. E agora ele me retorna todos os valores do banco, o que pode ser? Obrigado mesmo pela atenção irmão!

flbasto

  • Iniciante
  • **
  • Mensagens: 53
    • Email
Re:Filtrar informações
« Responder #6 Online: Janeiro 27, 2015, 01:03:13 pm »
Deu certo, era só tirar as aspas da variavel global no Grid. Obrigado mesmo !

megh

  • Visitante
Re:Filtrar informações
« Responder #7 Online: Janeiro 27, 2015, 02:02:14 pm »
Legal, mude para [RESOLVIDO] o título