quinta-feira, 15 de fevereiro de 2001

Pesquisa com acentuação

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.



Esta matéria foi postada originalmente no ASP4Developers por Rubens N. Farias (site), que na época era "pós-graduado em análise de sistemas orientados a objetos, MCP, MCSD, MCAD, MCSD.NET e consultor em TI, além de idealizador do projeto ASP4Developers. Desenvolve sistemas sob medida, focados na satisfação do usuário, com qualidade e custo realista.". Hoje, vai saber...

0 comentários: