Ajuda com Pesquisa de registro com SQL

Delphi

05/12/2003

Montei um grid de um tabela que quando no titulo ordeno com um clausula ORDER BY, e grava o nome do campo em uma varialvel global.

E no evento onchange de um edit estou com outra funcao fazendo um filtro com like de qualquer uma das colunas do grid, tudo funciona mais quando ordeno o campo data ele não me filtra o a data que estou digitando, uso firebird 1.5, sera que estou fazendo alguma coisa errada..

Desde ja agradeço a todos...


J@ck

J@ck

Curtidas 0

Respostas

Turbo Drive

Turbo Drive

05/12/2003

Geralmente as filtragens por data não podedm ser feitas usando like, e sim atribuindo parâmetros.

EX:
QTudo.sql.Add(´Select SUM(valor), SUM(valorpago) from extratoconta where (dtini >=:inicio and dtfim <=:final and situacao <> ´´Quitadas´´)´)
QTudo.ParamByName(´inicio´).ASDateTime := strtodate(maskedit1.text);
QTudo.ParamByName(´fim´).ASDateTime := strtodate(maskedit2.text);
QTudo.Open;

Qualquer coisa post o seu código aqui parta analisarmos.


GOSTEI 0
J@ck

J@ck

05/12/2003

with dm.qryIMPORTA do
Begin
Close;
SelectSQL.Clear;
SelectSQL.Add(´select * from importa´);
SelectSQL.Add(´where ´+sSISCAMPOPESQ+´ like ´´´+edtPESQUISAR.Text+´¬´´´);
Open;
end;


O codigo que estou usando e esse onde sSISCAMPOPESQ e uma variavel global que quando clico no titulo do dbgrid que passo o nome do campo da coluna para ela , e edtPESQUISAR e um unico edit que pesquiso todos os campos do dbgrid...


GOSTEI 0
Turbo Drive

Turbo Drive

05/12/2003

Tente isto:

with dm.qryIMPORTA do
Begin
Close;
SelectSQL.Clear;
SelectSQL.Add(´select * from importa´);
try
strtodate(edtPESQUISAR.Text);
SelectSQL.Add(´where ´+sSISCAMPOPESQ+´ >=:dia ´);
SelectSQL.Parambyname(´dia´).asDatetime := strtodate( edtPESQUISAR.Text);
except
SelectSQL.Add(´where ´+sSISCAMPOPESQ+´ like ´´´+edtPESQUISAR.Text+´¬´´´);
Open;
end;


Se for uma data válida ele pesquisa por passagem de parâmetros.


GOSTEI 0
POSTAR