Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Palavras com acentos em Select


João Paulo Taraciuk

Pergunta

Boa tarde

Estou trabalhando em uma aplicação feita em Delphi com base de dados em Access e estou encontrando dificuldades no Select no que diz respeito a palavras acentuadas serem buscadas sem digitar o acento, ex: José e Jose, não e não.

Como eu poderia contornar esse problema no Delphi?

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

Olá pessoal

Consegui resolver o problema da pesquisa com ou sem acentos, vou colocar a função que criei, se alguém passar pelo mesmo problema:

Bom, crio a função:

Function TratarAcentos(txt: String): String;

function Tfrm_Clientes.TratarAcentos(txt: String): String;
var
i: Integer;
begin
if(Trim(txt))<>''then
begin
for i:=0 to Length(txt)do
  begin
  case txt[i] of
  'a', 'á', 'â', 'ã', 'à', 'ä', 'å', 'Á', 'Â', 'Ã', 'À', 'Ä', 'Å' : txt[i]:= '_';
  'e', 'é', 'ê', 'è', 'ë', 'É', 'Ê', 'È', 'Ë'                     : txt[i]:= '_';
  'í', 'î', 'ì', 'ï', 'Í', 'Î', 'Ì', 'Ï'                          : txt[i]:= '_';
  'ó', 'ô', 'õ', 'ò', 'ö', 'Ó', 'Ô', 'Õ', 'Ò', 'Ö'                : txt[i]:= '_';
  'ú', 'û', 'ù', 'ü', 'Ú', 'Û', 'Ù', 'Ü'                          : txt[i]:= '_';
  'ç', 'Ç'                                                        : txt[i]:= '_';
  end;
  Result:=txt;
  end;
end;
end;
Aí chamei ela assim no select:
procedure Tfrm_Clientes.Busca;
begin
with
  DataModule1.ADOQueryClientes do
  begin
  Active:=False;
  SQL.Clear;
  SQL.Add('Select * from Clientes where nome like :a');
  Parameters.ParamByName('a').Value:=TratarAcentos(edt_pesquisa.Text)+ '%';
  Active:=True;
  end;
end;

Assim, colocando na Public posso chamar ela em qualquer form, só colocando o nome do edit.

Mas, como nem tudo são rosas, a funcao do '_'(Underline) é ser um coringa, ou seja, ele substitui o caracter naquela posicao por qualquer um, e pode acontecer o seguinte, no caso de ter que pesquisar por exemplo cão e no banco tenha cão e Chow, por exemplo, vai vir as duas na busca quando digitar cao, devido ao fato de o 'a' virar qualquer letra, vai virar um h, nesse caso.

Mas isso resolve o meu problema por hora.

Abraço!!!

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,2k
×
×
  • Criar Novo...