Pesquisa com acento
Como fazer para que ao pesquisar uma palavra completa, a mesma venha, quer tenha ou não acento?
Ex : Edit1.Text := ´Ácido clorídrico´ as duas tem acento, mas poderiam estar sem o acento ou apenas uma com acento.
CampodoBD := ´Acido clorídrico´ ou ´Ácido cloridrico´ ou ´Acido cloridrico´ ou ´Ácido clorídrico´,
eu queria um
select nomecampo from tabela where nomecampo := edit1.text, só que assim ele não traz com e sem acento
Ex : Edit1.Text := ´Ácido clorídrico´ as duas tem acento, mas poderiam estar sem o acento ou apenas uma com acento.
CampodoBD := ´Acido clorídrico´ ou ´Ácido cloridrico´ ou ´Acido cloridrico´ ou ´Ácido clorídrico´,
eu queria um
select nomecampo from tabela where nomecampo := edit1.text, só que assim ele não traz com e sem acento
Edilcimar
Curtidas 0
Respostas
Aroldo Zanela
12/02/2006
Colega,
Acho que uma pesquisa [url=http://www.firebase.com.br/fb/artigo.php?id=1043]fonética[/url] poderá resolver.
Acho que uma pesquisa [url=http://www.firebase.com.br/fb/artigo.php?id=1043]fonética[/url] poderá resolver.
GOSTEI 0
Edilcimar
12/02/2006
Infelizmente acho que uma pesquisa fonética não serviria, pois como trata-se de fazer comparações entre nomes químicos, os quais muitas vezes são parecidos, eu teria resultados indesejáveis, a pesquisa teria que ser efetuada considerando apenas acentos (de qualquer tipo) e Ç quando a pessoa não colocasse
GOSTEI 0
Thomaz_prg
12/02/2006
Você poderia verificar em sua aplicação se existe ou não acentos, se exitir poderia substituir por _ (underline ou sublinhado). Daí traria qualquer item.
GOSTEI 0
Edilcimar
12/02/2006
já tentei o _, mas não funcionou
GOSTEI 0
Thomaz_prg
12/02/2006
Fiquei intrigado, pois o _ funciona blz...
Você tá usando LIKE ou =?? Pois se for = a pesquisa é literal, ou seja, idêntica, daí o _ não funciona.
Você tá usando LIKE ou =?? Pois se for = a pesquisa é literal, ou seja, idêntica, daí o _ não funciona.
GOSTEI 0
Weber
12/02/2006
Entendo perfeitamente o problema que nosso colega Edilcimar está passando. Já tentei resolver de todas as formas porém o mais próximo que cheguei foi usando fonética.
Vejam o exemplo e o motivo do _ não funcionar.
Vou procurar por JOSÉ e vai funcionar
[b:a63af9e725]Select NOME From Tabela Where NOME LIKE (´JOS_´)[/b:a63af9e725]
O resultado da pesquisa foi JOSÉ e JOSE
Agora vou procurar por JOSE e não vai funcionar
[b:a63af9e725]Select NOME From Tabela Where NOME LIKE(´JOSE´)[/b:a63af9e725]
O resultado da pesquisa foi apenas JOSE, isto ocorre porque o usuário não colocou acentos em sua pesquisa.
Vejam o exemplo e o motivo do _ não funcionar.
NOME JOSÉ JOÃO JOSE JOAO
Vou procurar por JOSÉ e vai funcionar
[b:a63af9e725]Select NOME From Tabela Where NOME LIKE (´JOS_´)[/b:a63af9e725]
O resultado da pesquisa foi JOSÉ e JOSE
Agora vou procurar por JOSE e não vai funcionar
[b:a63af9e725]Select NOME From Tabela Where NOME LIKE(´JOSE´)[/b:a63af9e725]
O resultado da pesquisa foi apenas JOSE, isto ocorre porque o usuário não colocou acentos em sua pesquisa.
GOSTEI 0
Truck1n
12/02/2006
Mude o Charset e o collate do Banco, para um que aceite Acentuos
Ok?
Até mais!
Ok?
Até mais!
GOSTEI 0
Edilcimar
12/02/2006
o charset e o collate já aceitam os acentos, tanto é que eles estão cadastrados no bd, o problema está em selecionar uma palavra com ou sem acento e a resposta vir com e sem acento
GOSTEI 0
Firekiller_am
12/02/2006
estou fazendo alguns testes ai fera...
sobe
sobe
GOSTEI 0
Edilcimar
12/02/2006
e eu continuo sem conseguir solucionar!
GOSTEI 0
Edilcimar
12/02/2006
ainda não consegui!
GOSTEI 0
Gandalf.nho
12/02/2006
No momento a única maneira de conseguir isso sem gambiarra, é usar um collate não oficial como o PT_BR que ignora maiúsculas/minúsculas e acentos, já que os collates que vem com o Firebird não são assim. Ou esperar pelo FB 2.0 que trará de maneira oficial o suporte para esse collate.
GOSTEI 0
Edilcimar
12/02/2006
Ok, obrigado
GOSTEI 0
Armando.boza
12/02/2006
amigo
[url]http://sourceforge.net/projects/firebirdptbr[/url]
baixe e teste .. eu estou usando e aprovo.
acha JOÃO = JOAO, JOSÉ = JOSE, GONÇALVES = GONCALVES
é otimo
[url]http://sourceforge.net/projects/firebirdptbr[/url]
baixe e teste .. eu estou usando e aprovo.
acha JOÃO = JOAO, JOSÉ = JOSE, GONÇALVES = GONCALVES
é otimo
GOSTEI 0
Edilcimar
12/02/2006
ok, vou testar
GOSTEI 0
Edilcimar
12/02/2006
armando.boza, o download que fiz para o firebird1.5.2 travou o firebird e não funcionou, tive que reisntalar o firebird novamente
GOSTEI 0
Thomaz_prg
12/02/2006
Ei pessoal, fiz uma UDF bem simples, que pode ajudar nesse caso (se ainda estiver precisando é claro). Ela converte tudo para maiúsculo, retirando acentos e cedilha se existirem.
Por exemplo, se tenho os nomes José, Jose, Calca, Calça. Se eu colocar o seguinte Select:
se eu atribuir josé, jose José, JOSE, etc... ele irá buscar tanto o item com o nome José quanto o Jose, independente se estiverem com acentos ou não. O mesmo ocorre se eu colocar CALCA para o parâmetro NOME, pois ele irá trazer os 2 itens, Calca e Calça.
Espero que ajude...
O link para download é [url]www.thomazs.pop.com.br/stormudf.zip[/url].
A UDF fui eu mesmo quem criou, portanto, é free.
Por exemplo, se tenho os nomes José, Jose, Calca, Calça. Se eu colocar o seguinte Select:
SELECT * FROM TABELA WHERE TrataAcentos(NOME) = TrataAcentos( :NOME )
se eu atribuir josé, jose José, JOSE, etc... ele irá buscar tanto o item com o nome José quanto o Jose, independente se estiverem com acentos ou não. O mesmo ocorre se eu colocar CALCA para o parâmetro NOME, pois ele irá trazer os 2 itens, Calca e Calça.
Espero que ajude...
O link para download é [url]www.thomazs.pop.com.br/stormudf.zip[/url].
A UDF fui eu mesmo quem criou, portanto, é free.
GOSTEI 0
Edilcimar
12/02/2006
thomaz, o meu select com e sem acento é continuação deste tópico
http://forum.clubedelphi.net/viewtopic.php?t=73483
eu estou usando win1252 com pxw_intl850, infelizmente não consegui fazer a sua dll funcionar, não sei qual o problema
http://forum.clubedelphi.net/viewtopic.php?t=73483
eu estou usando win1252 com pxw_intl850, infelizmente não consegui fazer a sua dll funcionar, não sei qual o problema
GOSTEI 0
Armando.boza
12/02/2006
armando.boza, o download que fiz para o firebird1.5.2 travou o firebird e não funcionou, tive que reisntalar o firebird novamente
Amigo, infelizmente eu uso a versão 1.5.3 4870 ... a 1.5.2 eu não testei.
Esperimenta a 1.5.3 4870 que eu ja testei.
GOSTEI 0
Thomaz_prg
12/02/2006
Olá amigo Edilcimar... testei a UDF com 3 versões do Firebird, a 1.5.2, 1.5.3 e 2.0. Em ambas funcionaram a contento. Apareceu alguma mensagem de erro? Ou o que houve de errado com a mesma? É para que eu possa tentar arrumá-la e então, redistribuí-la.
GOSTEI 0