Fórum Consulta Independente de acento #515668
03/04/2015
0
Ex:
Pesquisa joao
Resultado joao, joão, JOÃO
Narba Silva
Curtir tópico
+ 0Posts
03/04/2015
Marcos P
https://www.devmedia.com.br/dicas-removendo-acentos-de-uma-string/933
https://www.devmedia.com.br/remover-acentos-string-e-char-delphi/18354
https://marcosalles.wordpress.com/2013/04/14/dicas-removendo-acentos-de-uma-string-delphi/
Gostei + 0
03/04/2015
Narba Silva
Assim, no meu banco existe o nome João salvo com acento, então ao consultar "joao" ele deveria buscar todos com ou sem acento no banco.
Com essas funções são trocados os acentos para a busca no delphi e nao no banco que vai continuar não trazendo o que quero.
Gostei + 0
03/04/2015
Marcos P
Se for necessário tratar maiusculas faça mais uma função q converta os dois argumentos passando 4 parâmetros ao banco.... João + Joao + JOÃO + JOAO.
E, é isso...
Gostei + 0
03/04/2015
Narba Silva
Para ignorar palavras maiúsculas e minusculas fiz assim:
DM.DSet_Clientes.Close;
DM.DSet_Clientes.SelectSQL.Clear;
DM.DSet_Clientes.SelectSQL.Add('select * from clientes where UPPER(cli_nome) like :nome');
DM.DSet_Clientes.ParamByName('nome').AsString:= '%'+uppercase(edit_pesquisa.text)+'%';
DM.DSet_Clientes.Open;Vi lugares dizendo pra usar o ''AnsiUpperCase'' , para ignorar acentos, mais não deu certo.
Seria difícil me mostrar exemplos de como fazer com acentos?
Gostei + 0
03/04/2015
Marcos P
Com acentuação...
Sem acentuação...
Maiúsculas...
Minúsculas...
Não consigo simular isso agora, mas pense em uma query com 4 parâmetros... pode ser uma solução.
Na sequência posso preparar algo de código.
Gostei + 0
03/04/2015
Ricardo
with query do
begin
close;
sql.Clear;
sql.Add('select campos from tabela');
SQL.Add('where upper(campo) like upper('+ QuotedStr('%' + Edit.Text + '%'));
sql.Add(')');
sql.Add('order by upper(campo)');
open;
end;
Gostei + 0
03/04/2015
Narba Silva
Como fazer?
Gostei + 0
03/04/2015
Narba Silva
Como fazer?
Gostei + 0
03/04/2015
Ricardo
Como fazer?
Firebird e Interbase são o mesmo banco, então creio que se você usar dessa forma que demonstrei não vai ter erros.
Tente ai e poste o resultado.
Gostei + 0
03/04/2015
Narba Silva
MEU BANCO ES
Gostei + 0
03/04/2015
Narba Silva
MEU BANCO ESTÁ COM EXTENSÃO GDB, SÓ PRA VOCÊS SABEREM NÃO SEI SE IMPORTA.
TENTEI FAZER O CÓDIGO ACIMA MAIS EM RELAÇÃO A MAIÚSCULA E MINUSCULA FUNCIONA , ACENTO NÃO
NO BANCO TEM Thaís e João.
Pesquiso thais e joao ele retorna nada.
Gostei + 0
03/04/2015
Ricardo
MEU BANCO ESTÁ COM EXTENSÃO GDB, SÓ PRA VOCÊS SABEREM NÃO SEI SE IMPORTA.
TENTEI FAZER O CÓDIGO ACIMA MAIS EM RELAÇÃO A MAIÚSCULA E MINUSCULA FUNCIONA , ACENTO NÃO
NO BANCO TEM Thaís e João.
Pesquiso thais e joao ele retorna nada.
Estranho, deveria funcionar! Então deve ser alguma coisa no Interbase.
Eu coloco aqui JOÃO e se procurar por JOÃO, JoãO, joao, joão, joÃO, JOAO etc... ele encontra normalmente.
Gostei + 0
03/04/2015
Marcos P
Isso deve funcionar independentemente da configuração do banco...
Gostei + 0
03/04/2015
Narba Silva
Pois por exemplo a função troca áàãâ por a , agora como pesquisar joao e a função saber troca o a por ã e não por áàâ???
Se não tem exemplo ?
Pesquisei sobre Collate, mais dai teria que mexer no banco e não sei se compeça
Gostei + 0
03/04/2015
Marcos P
Para a sua pesquisa, pelo q vc definiu no início do post, áãââá é igual a aaaaa, assim como joão é igual a joao.
Não se trata, portanto, de por acentos.... mas sim tirá-los.
Você deve pegar o código Delphi aí de cima e adaptá-lo para passar dois argumentos... o original e o sem acentos.
Vou tentar achar um micro aqui, para lhe passar um exemplo....
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)