Ir para conteúdo

POWERED BY:

Arquivado

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

alohmann

Acentos em Busca ASP - Access

Recommended Posts

Pessoal, estou usando o código abaixo para um sistema de buscas, mas se eu esqueço de digitar um acento ou cedilha, a palavra não é encontrada. Por exemplo, se escrevo "educacao", não encontra nada, mas se escrevo "educação", aí encontra. Como faço para a busca ignorar acentos e cedilha? Procurei pelo fórum mas não achei nenhum modelo que funcionasse no meu caso.

 

 

<%
Dim recBuscaLivros__MMColParam
recBuscaLivros__MMColParam = "1"
If (Request.Form("txtBusca")    <> "") Then 
  recBuscaLivros__MMColParam = Request.Form("txtBusca")   
End If
%>

<%
Dim recBuscaLivros
Dim recBuscaLivros_cmd
Dim recBuscaLivros_numRows

Set recBuscaLivros_cmd = Server.CreateObject ("ADODB.Command")
recBuscaLivros_cmd.ActiveConnection = MM_conAguilar_STRING
recBuscaLivros_cmd.CommandText = "SELECT titulo, autor, autor2, autor3, autor4, autor5, sinopse, codLivro FROM livro WHERE sinopse LIKE ? OR autor LIKE '%MMColParam%' OR autor2 LIKE '%MMColParam%' OR autor3 LIKE '%MMColParam%' OR autor4 LIKE '%MMColParam%' OR autor5 LIKE '%MMColParam%' OR titulo LIKE '%MMColParam%' ORDER BY titulo ASC" 
recBuscaLivros_cmd.Prepared = true
recBuscaLivros_cmd.Parameters.Append recBuscaLivros_cmd.CreateParameter("param1", 200, 1, 255, "%" + recBuscaLivros__MMColParam + "%") ' adVarChar

Set recBuscaLivros = recBuscaLivros_cmd.Execute
recBuscaLivros_numRows = 0
%>
<%
Dim recAutor__MMColParam
recAutor__MMColParam = "1"
If (Request.Form("txtBusca")    <> "") Then 
  recAutor__MMColParam = Request.Form("txtBusca")   
End If
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

usa essa função

 

<% @Language = VBScript %>
<%session.LCID=1046%>
<%

function TiraAcento(StrAcento)
for i = 1 to len(StrAcento) 
  Letra = mid(StrAcento, i, 1)
  Select Case Letra
   Case "a","á","Á","à","À","ã","Ã","â","Â","â","ä","Ä"
   Letra = "A"
   Case "e","é","É","ê","Ê","Ë","ë","È","è"
   Letra = "E"
   Case "i","í","Í","ï","Ï","Ì","ì"
   Letra = "I"
   Case "o","ó","Ó","ô","Ô","õ","Õ","ö","Ö","ò","Ò"
   Letra = "O"
   Case "ú","Ú","Ù","ù","ú","û","ü","Ü","Û"
   Letra = "U"
   Case "ç","Ç"
   Letra = "C"
   Case "ñ"
   Letra = "N"
  End Select
  texto = texto & Letra
next
TiraAcento = texto
end function

StrAcento = TiraAcento(Request.QueryString("busca"))
if StrAcento<> "" then
stringConexao = "Provider=Microsoft.JET.OLEDB.4.0; Data Source=" & Server.MapPath("dados.mdb")
Set RsConexao = Server.CreateObject("ADODB.Connection")
RsConexao.Open stringConexao
strSQL = "SELECT * FROM Noticias WHERE Noticia LIKE '%"& StrAcento &"%'" 
Set RS = RsConexao.Execute(strSQL) 
%>
<body bgcolor="white" leftmargin="0" marginwidth="0" topmargin="0" marginheight="0">
<font face="Arial"><span style="font-size:10pt;"> 
<%While not RS.EOF
response.write ("<a href=""ver.asp?id=" & ""    & RS("id") & """>" & RS("Resumo") & "</a>") & "<BR><BR>"
RS.MoveNext
Wend
end if
 %>
</span><span style="font-size:12pt;"><b> </b></span></font>

Compartilhar este post


Link para o post
Compartilhar em outros sites

segue ele exatamente como acima

você tem a função, embaixo dela

a variavel que executa a função

 

StrAcento = TiraAcento(Request.QueryString("busca"))

depois você cria a conexão, cria o rs e executa a SQL, com a variavel StrAcento , que você executou a função

 

strSQL = "SELECT * FROM Noticias WHERE Noticia LIKE '%"& StrAcento &"%'"

Compartilhar este post


Link para o post
Compartilhar em outros sites

A função eu entendi, mas não sei como implementá-la no meu Recorset já definido, nas variáveis MMColParam e no que vem do meu form de busca (txtBusca). Teria que fazer um novo recorset do zero?

Compartilhar este post


Link para o post
Compartilhar em outros sites

pega o txtbusca e coloca ele na função

 

StrAcento = TiraAcento(Request.form("txtbusca "))

 

a função TiraAcento, remove os acentos e o resultado é a variavel StrAcento

que depois você pode usar para uma nova consulta, novo recordset

 

Set RsConexao = Server.CreateObject("ADODB.Connection")
RsConexao.Open stringConexao
strSQL = "SELECT * FROM Noticias WHERE Noticia LIKE '%"& StrAcento &"%'" 
Set RS = RsConexao.Execute(strSQL)

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.