Pesquisa não encontra palavras com acento.
Bom dia amigos,
Mas uma dúvida, tenho certeza que obterei ajuda dos amigos.
Meu problema é o seguinte, tenho esse código abaixo que pesquisa uma palavra ou uma frase em qualquer parte dos dados armazenado na tabela.
A pesquisa está funcionando igual a carro zero, porém se eu digitar qualquer palavra com acento não retorna nada no DBGrid.
Espero que alguém possa me ajudar, um grande abraço a todos.
Mas uma dúvida, tenho certeza que obterei ajuda dos amigos.
Meu problema é o seguinte, tenho esse código abaixo que pesquisa uma palavra ou uma frase em qualquer parte dos dados armazenado na tabela.
procedure Tfrm_Modelo.BtnPesquisarClick(Sender: TObject);
begin
if (cbxField.Text <> EmptyStr) and (EdtValor.Text <> EmptyStr) then
begin
DS_CADASTRO.DataSet.Filter := 'Upper('+cbxField.Text+') like '+QuotedStr('%'+ UpperCase(EdtValor.Text)+'%');
DS_CADASTRO.DataSet.Filtered := True;
if not DS_CADASTRO.DataSet.Active then
DS_CADASTRO.DataSet.Open;
end;
end;
A pesquisa está funcionando igual a carro zero, porém se eu digitar qualquer palavra com acento não retorna nada no DBGrid.
Espero que alguém possa me ajudar, um grande abraço a todos.
Celso Souza
Curtidas 0
Respostas
Nirlan Fundao
16/05/2013
Eu possuo um código similar que está funcionando perfeitamente, que talvez lhe ajude.
Estou usando o Delphi 2007 e Firebird 2.5
O código está em um evento de um botão. O frFiltro é um maskedit.
procedure TForm1.BotaoFiltroClick(Sender: TObject);
var
vSql : String;
begin
if frFiltro.Text = '' then
vSql := 'select * from T01_FAQ ORDER BY T01_NUMFAQ'
else
vSql := 'select * from T01_FAQ ' +
'WHERE ' +
'Upper(T01_TITULO) like ' + #39 + '%' + AnsiUpperCase(frFiltro.Text) + '%' + #39 +
'ORDER BY T01_NUMFAQ ';
ClientDataSet1.Close;
ClientDataSet1.CommandText := vSql;
ClientDataSet1.Open;
end;
Estou usando o Delphi 2007 e Firebird 2.5
O código está em um evento de um botão. O frFiltro é um maskedit.
procedure TForm1.BotaoFiltroClick(Sender: TObject);
var
vSql : String;
begin
if frFiltro.Text = '' then
vSql := 'select * from T01_FAQ ORDER BY T01_NUMFAQ'
else
vSql := 'select * from T01_FAQ ' +
'WHERE ' +
'Upper(T01_TITULO) like ' + #39 + '%' + AnsiUpperCase(frFiltro.Text) + '%' + #39 +
'ORDER BY T01_NUMFAQ ';
ClientDataSet1.Close;
ClientDataSet1.CommandText := vSql;
ClientDataSet1.Open;
end;
GOSTEI 0
Celso Souza
16/05/2013
Grande Nirlan! Cara muito obrigado pela ajuda, valeu mesmo, usei só 3 letras do seu código e resolveu o problema.
Está linha de código:
Eu alterei desta forma:
Um grande abraço amigo!
Está linha de código:
DS_CADASTRO.DataSet.Filter := 'Upper('+cbxField.Text+') like '+QuotedStr('%'+ UpperCase(EdtValor.Text)+'%');
Eu alterei desta forma:
DS_CADASTRO.DataSet.Filter := 'Upper('+cbxField.Text+') like '+QuotedStr('%'+ AnsiUpperCase(EdtValor.Text)+'%');
Um grande abraço amigo!
GOSTEI 0
Joel Rodrigues
16/05/2013
Tópico CONCLUÍDO.
GOSTEI 0