Fórum Filtro de Pesquisa Firebird + DelphiXE3+ Zeos #487416
30/07/2014
0
O objetivo é o usuário digitar um nome, e ele trazer do banco de dados o resultado.
Com números está funcionando. Mas com nomes não, está dando um erro de sintaxe.
Então, logicamente estou errando no codigo.
Para esse filtro usei um edit um botao e um DbGrid
o usuario digita o nome, e no DbGrida fica apenas os valores referentes ao digitado.
Estou utilizando o Zeos. O Banco é o Firebird 2.5.
Como fazer com que se eu digitar um nome fazer a consulta e trazer apenas os valores escritos no Edit?
Renato Sanches
Curtir tópico
+ 0Post mais votado
01/08/2014
Tem que colocar um espaço antes e depois do 'like', senão concatena com o nome do campo e o símbolo para o like é '%' ao invés de '*'.
Isso deve funcionar.
ds.DataSet.Filter := CampoFiltro + ' like ' + QuotedStr( '%' + edtFiltro.Text + '%');
Abraççç,
Renato
Renato Rubinho
Gostei + 1
Mais Posts
31/07/2014
Renato Rubinho
Posta o trecho do código que está usando para o filtro.
Mas uma idéia é que se funciona para números e não para texto, pode estar faltando colocar aspas no texto antes de mandar para o banco.
sql.add('SELECT * FROM ENREDECOS');
errado
sql.add('WHERE LOGRADOURO = ' + Edit1.text);
certo
sql.add('WHERE LOGRADOURO = ' + QuotedStr(Edit1.text));
Abraççç,
Renato
Gostei + 0
01/08/2014
Renato Sanches
begin
if ds.DataSet.FieldByName(CampoFiltro) is TWideStringField then
begin
ds.DataSet.Filter := CampoFiltro + 'like' + QuotedStr( '*' + edtFiltro.Text + '*');
end
else
begin
ds.DataSet.Filter := CampoFiltro +'='+ edtFiltro.Text;
end;
ds.DataSet.Filtered := True;
end;
Foi assim que consegui fazer funcionar com numeros eu nao estou usando o zQuery.
Gostei + 0
01/08/2014
Renato Sanches
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)