Fórum Filtro SQL com 3 condições (era: Logica..) #333992
30/11/2006
0
alguem pode me dar ideia de como fazer um filtro SQL utilizando 3 condiçoes:
1º se o checkbox1 esta marcado, entao pegar o valor do edit1
2º se o valor do combobox1 for diferente de ´[Select..]´
3ºse o valor do combobox2 for diferente de ´[Select..]´
gostaria de executar a seguinte query:
SELECT * FROM DATA Where Dia=´edit1.text´ and valor1=´combobox1.text´ and valor2=´combobox2.text´ ORDER BY DIA;
porem nao gostaria de usar varios ifs..
estava pensando em fazer uma funçao generica, na qual eu passaria as colunas do banco como um array e os valores da pesquisa como um array tmbm, depois ele agrupara td e me retornava uma string com o sql montado ja..
espero que alguem possa me ajudar a solucionar isto..
[]´ a todos q colaborarem..
Nightshade
Curtir tópico
+ 0Posts
01/12/2006
Denis
Gostei + 0
04/12/2006
Emerson Nascimento
qry.close; qry.sql.text := ´SELECT * FROM DATA ´+ ´Where Dia like :Dia and valor1 like :valor1 and valor2 like :valor2 ORDER BY DIA´; if checkbox1.checked then qry.sql.parambyname(´dia´).asstring := edit1.text else qry.sql.parambyname(´dia´).asstring := ´¬´ if combobox1.text <> ´´ then qry.sql.parambyname(´valor1´).asstring := combobox1.text else qry.sql.parambyname(´valor1´).asstring := ´¬´ if combobox2.text <> ´´ then qry.sql.parambyname(´valor2´).asstring := combobox2.text else qry.sql.parambyname(´valor2´).asstring := ´¬´ qry.open;
Gostei + 0
05/12/2006
Eniorm
SELECT CODIGO, NOME, COALESCE(MODELO,´´) AS MODELO, COALESCE(FABRICANTE,´´) AS FABRICANTE FROM PRODUTOS WHERE CODIGO LIKE :CODIGO AND NOME LIKE :NOME AND COALESCE(MODELO,´¬¬´) LIKE :MODELO AND COALESCE(FABRICANTE,´¬¬´) LIKE :FABRICANTE ORDER BY NOME
na hora de fazer a pesquisa, eu implemento
with qryPesquisa do begin Close; ParamByName(´CODIGO´).AsString := ´¬¬´; ParamByName(´NOME´).AsString := ´¬¬´; ParamByName(´MODELO´).AsString := ´¬¬´; ParamByName(´FABRICANTE´).AsString := ´¬¬´; case RadioGroup1.ItemIndex of 0 : ParamByName(´CODIGO´).AsString := texto; 1, 2, 3 : ParamByName(RadioGroup1.Items[RadioGroup1.ItemIndex]).AsString := texto+´¬´; end; Open; if not IsEmpty then DBGrid1.SetFocus; end;
onde TEXTO é uma string contendo a palavra-chave a ser pesquisada!
att
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)