Pesquisa com acento

Firebird

12/02/2006

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


Edilcimar

Edilcimar

Curtidas 0

Respostas

Aroldo Zanela

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.


GOSTEI 0
Edilcimar

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

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

Edilcimar

12/02/2006

já tentei o _, mas não funcionou


GOSTEI 0
Thomaz_prg

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.


GOSTEI 0
Weber

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.

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

Truck1n

12/02/2006

Mude o Charset e o collate do Banco, para um que aceite Acentuos

Ok?

Até mais!


GOSTEI 0
Edilcimar

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

Firekiller_am

12/02/2006

estou fazendo alguns testes ai fera...

sobe


GOSTEI 0
Edilcimar

Edilcimar

12/02/2006

e eu continuo sem conseguir solucionar!


GOSTEI 0
Edilcimar

Edilcimar

12/02/2006

ainda não consegui!


GOSTEI 0
Gandalf.nho

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

Edilcimar

12/02/2006

Ok, obrigado


GOSTEI 0
Armando.boza

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


GOSTEI 0
Edilcimar

Edilcimar

12/02/2006

ok, vou testar


GOSTEI 0
Edilcimar

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

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:

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

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


GOSTEI 0
Armando.boza

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

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
POSTAR