Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Felipe Bellé

Problema com busca MSSQL com acento

Recommended Posts

Boa tarde pessoal.

Espero não estar fazendo uma pergunta redundante, procurei e não encontrei nada do tipo (sou bem nb em usar termos para procurar coisas =x).

 

Bom, meu problema é o seguinte.

 

Estou fazendo um sistema de biblioteca, onde existe uma opção de busca nos acervos existentes no BD.

Oque acontece é que, o usuário pode digitar como termo por exemplo "informacao", porém, no BD esta salvo como "informação".

 

Para campos do tipo varchar, eu resolvi o problema, usando:

 

replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(descricao,'á','a'),'é','e'),'í','i'),'ó','o'),'ú','u'),'à','a'),'è','e'),'ì','i'),'ò','o'),'ù','u'),'ã','a'),'õ','o'),'ä','a'),'ë','e'),'ï','i'),'ö','o'),'ü','u'),'â','a'),'ê','e'),'î','i'),'ô','ô'),'û','u'),'ç','c') like '%" & acento(txtpesquisa.value) & "%'"
( a função acento usada no termo de pesquisa, retira todos os acentos da pesquisa ).

 

Porém para campos do tipo text, isso não funciona, ele da o seguinte erro:

Argument data type text is invalid for argument 1 of replace function.
Alguem saberia uma maneira que eu possa cortornar isso?

 

Grato

Felipe

Compartilhar este post


Link para o post
Compartilhar em outros sites

pra facilitar sua vida:

 

Function TiraAcento(ByVal Palavra)		cacento = "àáâãäèéêëìíîïòóôõöùúûüÀÁÂÃÄÈÉÊËÌÍÎÒÓÔÕÖÙÚÛÜçÇñÑ^~´`'"		sacento = "aaaaaeeeeiiiiooooouuuuAAAAAEEEEIIIOOOOOUUUUcCnN"		texto = ""		If Palavra <> "" Then			For x = 1 To Len(Palavra)				letra = Mid(Palavra, x, 1)				pos_acento = InStr(cacento, letra)				If pos_acento > 0 Then					letra = Mid(sacento, pos_acento, 1)				End If				texto = texto & letra			Next			TiraAcento = texto		End If	End Function

chamando a função

 

response.write(TiraAcento("fórum Imasters.Programação é tudo"))

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado de qualquer maneira jonathandj. Mas essa função eu ja tinha.

 

Resolvi o problema. Algo meio chunchado mas =x

 

replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(convert(varchar(8000),descricao),'á','a'),'é','e'),'í','i'),'ó','o'),'ú','u'),'à','a'),'è','e'),'ì','i'),'ò','o'),'ù','u'),'ã','a'),'õ','o'),'ä','a'),'ë','e'),'ï','i'),'ö','o'),'ü','u'),'â','a'),'ê','e'),'î','i'),'ô','ô'),'û','u'),'ç','c') like '%" & acento(txtpesquisa.value) & "%'"

Bastou converter o campo, de text para varchar. Deve haver outra maneira de se fazer, mas essa foi a unica que encontrei.

 

Vlw

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.