Muita gente tem perguntado como fazer uma pesquisa de palavras, considerando que os resultados podem (ou não) ter letras acentuadas, então montei a função abaixo que, facilita o processo. Ela se baseia no estudo do operador SQL LIKE, que permite que seja informado um range de caracteres a serem pesquisados em uma única posição.
'Rotina para pesquisa de palavras acentuadas
'Por Rubens Farias (rubens.farias@gmail.com), Fev/2001
'[Preserve a referência ao autor!]
Function FormatLikeSearch( Texto )
dim n, NovoTexto, valorASC
NovoTexto = ""
for n = 1 to len( Texto )
valorASC = asc( mid( Texto, n, 1 ) )
select case valorASC
case 39: NovoTexto = NovoTexto & "''"
case 65: NovoTexto = NovoTexto & "[ÁÀÂÄÃA]"
case 67: NovoTexto = NovoTexto & "[ÇC]"
case 69: NovoTexto = NovoTexto & "[ÉÈÊËE]"
case 73: NovoTexto = NovoTexto & "[ÍÌÎÏI]"
case 79: NovoTexto = NovoTexto & "[ÓÒÔÖÕO]"
case 85: NovoTexto = NovoTexto & "[ÚÙÛÜU]"
case 97: NovoTexto = NovoTexto & "[áàâäãa]"
case 99: NovoTexto = NovoTexto & "[çc]"
case 101: NovoTexto = NovoTexto & "[éèêëe]"
case 105: NovoTexto = NovoTexto & "[íìîïi]"
case 111: NovoTexto = NovoTexto & "[óòôöõo]"
case 117: NovoTexto = NovoTexto & "[úùûüu]"
case else
if valorASC > 31 and valorASC < 127 then
NovoTexto = NovoTexto & chr( valorASC )
else
NovoTexto = NovoTexto & "_"
end if
end select
next
FormatLikeSearch = "'%" & NovoTexto & "%'"
End Function
E use assim:
set rsquery = conn.execute( "select * from tabela where descricao like " & FormatLikeSearch( request.form("TextoPesquisa") ) )
Caso faça alguma alteração significativa na rotina, envie-me um email, para que eu possa incrementar este código.
0 comentários:
Postar um comentário