Fórum Filtro de Pesquisa Firebird + DelphiXE3+ Zeos #487416

30/07/2014

0

Pessoal, eu estou tendo dificuldades para editar um filtro de pesquisa.
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

Renato Sanches

Responder

Post mais votado

01/08/2014

Buenos,

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

Renato Rubinho
Responder

Gostei + 1

Mais Posts

31/07/2014

Renato Rubinho

Buenas,

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
Responder

Gostei + 0

01/08/2014

Renato Sanches

procedure TfrmModeloLista.btnFiltroClick(Sender: TObject);
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.
Responder

Gostei + 0

01/08/2014

Renato Sanches

Agora funcionou. Obrigado pela ajuda!
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar