Foros del Web » Programando para Internet » ASP Clásico »

Ignorar tildes en asp

Estas en el tema de Ignorar tildes en asp en el foro de ASP Clásico en Foros del Web. Estoy haciendo un buscador en asp y me gustaria saber como evitar que me diferencia una misma palabra por llevar tilde o no y ya ...
  #1 (permalink)  
Antiguo 21/07/2003, 05:45
 
Fecha de Ingreso: diciembre-2002
Mensajes: 129
Antigüedad: 21 años, 4 meses
Puntos: 0
Ignorar tildes en asp

Estoy haciendo un buscador en asp y me gustaria saber como evitar que me diferencia una misma palabra por llevar tilde o no y ya de paso saber como hacer que me ignore los puntos y las comas. Con lo primero me basta, pero bueno, por preguntar...
Muchas gracias a todos.
  #2 (permalink)  
Antiguo 21/07/2003, 10:50
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 2 meses
Puntos: 535
Si tu BD es Access, buscá la palabra "accins" (sin las comillas) acotándo los resultados al foro ASP.

Ya se pasó varias veces un script que posibilita eso de las búsquedas sin tildes.

saludos
__________________
...___...
  #3 (permalink)  
Antiguo 22/07/2003, 02:17
 
Fecha de Ingreso: diciembre-2002
Mensajes: 129
Antigüedad: 21 años, 4 meses
Puntos: 0
La BD no es access, es SQL. Por eso preguntaba. Sirve tb el script de access? No creo, no?
  #4 (permalink)  
Antiguo 22/07/2003, 05:34
Avatar de eDuDiTo  
Fecha de Ingreso: junio-2002
Ubicación: Murcia
Mensajes: 173
Antigüedad: 21 años, 9 meses
Puntos: 0
Yo utilizo esta función:

Function sinAcentos(Str)
Dim CurLtr
For x = 1 To Len(Str)
CurLtr = Mid(Str, x, 1)
Select Case CurLtr
Case "a", "à", "á"
sinAcentos = sinAcentos & "[aàá]"
Case "e", "é", "è"
sinAcentos = sinAcentos & "[eéè]"
Case "i", "ì", "í"
sinAcentos = sinAcentos & "[iìí]"
Case "o", "ò", "ó"
sinAcentos = sinAcentos & "[oòó]"
Case "u", "ù", "ú"
sinAcentos = sinAcentos & "[uùú]"
Case "n", "ñ", "Ñ"
sinAcentos = sinAcentos & "[nñÑ]"
Case Else
sinAcentos = sinAcentos & CurLtr
End Select
Next
End Function



y luego al generar la sentencia SQL la llamo donde sea necesario:

sql = "SELECT * FROM Tabla WHERE sNombre LIKE '%" & sinAcentos(palabra) & "%'"

Más sencillo imposible no?
  #5 (permalink)  
Antiguo 22/07/2003, 10:51
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 2 meses
Puntos: 535
Esa es la función que decía antes... sólo que la que había visto decía accins(Str) en vez de sinAcentos(Str)

La verdad que no se si funciona en SQLServer.. es cuestión de probar
__________________
...___...
  #6 (permalink)  
Antiguo 22/07/2003, 11:28
Avatar de eDuDiTo  
Fecha de Ingreso: junio-2002
Ubicación: Murcia
Mensajes: 173
Antigüedad: 21 años, 9 meses
Puntos: 0
Sipe, yo la estoy usando en SQL Server 2000 y funciona perfectamente
  #7 (permalink)  
Antiguo 23/07/2003, 11:09
 
Fecha de Ingreso: abril-2001
Mensajes: 293
Antigüedad: 23 años
Puntos: 0
Hola

y que sucederia en el caso que en la base de datos existan datos con tilde, como se podria solucionar esto en las busquedas?
  #8 (permalink)  
Antiguo 23/07/2003, 12:06
Avatar de eDuDiTo  
Fecha de Ingreso: junio-2002
Ubicación: Murcia
Mensajes: 173
Antigüedad: 21 años, 9 meses
Puntos: 0
Eso es lo que estamos tratando, por ejemplo, si tienes un registro Apellido que contiene:

López

y tú en el buscador escribes:

lopez

usando el código que he puesto más arriba te devolvería también dicho registro.

No se si me he explicado...
  #9 (permalink)  
Antiguo 23/07/2003, 13:20
 
Fecha de Ingreso: abril-2001
Mensajes: 293
Antigüedad: 23 años
Puntos: 0
pero ese codigo que esta ahi saca los tildes a las palabras que escribes en una caja de texto? verdad, entonces solamente serviria siempre y cuando en la base de datos no existan datos con tildes..., pero cuando existen datos con tildes en la base de datos esta rutina no sirve, porque la idea no es borrarle los tildes a los campos de la bd, por ejemplo en un campo de nombres de autor, se necesitan los tildes.

yo creo que, el codigo posteado es una parte de la solucion del problema (cuando el usuario digite el texto a buscar), pero para que el sql busque una palabra y omita el asento, se deberia crear un indice especial, la verdad aun no he podido hacer las pruebas, pero creo que la idea es generar un indice del campo el cual reemplace las palabras con tildes por las sin tildes

por ejemplo algo como esto

CREATE INDEX nombre
ON autores (replace(nombre,"ÁÉÍÓÚ","AEIOU"))


algo por el estilo, repito aun no he probado el codigo, pero creo que deberia funcionar.

saludos y si a alguien le resulta me cuenta..

adios
  #10 (permalink)  
Antiguo 23/07/2003, 13:36
 
Fecha de Ingreso: abril-2001
Mensajes: 293
Antigüedad: 23 años
Puntos: 0
acabo de encontrar esto

Vas a la tabla en cuestión opción "Diseñar tabla" selecciona el campo en el que no quieres que el SQL Server distinga los acentos abajo hay una ficha cuya última opción se llama intercalación dale al botón con los tres puntitos y desmarca el check button que dice "distinguir acentos" ...y así lo tienes.



y lo otro


Con el siguiente codigo en la consulta buscar todos aquellos campos q tienen el texto patron sin importar si este tiene o no acentos y si esta en mayusculas o minusculas.

WHERE TRANSLATE( UPPER(NOMBRE_CAMPO), 'ÁÉÍÓÚ', 'AEIOU' ) ")
LIKE TRANSLATE( UPPER('%patron%'), 'ÁÉÍÓÚ', 'AEIOU' )


saludos
  #11 (permalink)  
Antiguo 23/07/2003, 14:40
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 2 meses
Puntos: 535
Cita:
yo creo que, el codigo posteado es una parte de la solucion del problema
no creas tanto y probalo. Funciona bien. Si en la tabla existen los datos "Martín" y "Martiniano" y buscás "%martin%" o "%martín%", te va a devolver los dos registros en ambas búsquedas
  #12 (permalink)  
Antiguo 23/07/2003, 15:01
Avatar de eDuDiTo  
Fecha de Ingreso: junio-2002
Ubicación: Murcia
Mensajes: 173
Antigüedad: 21 años, 9 meses
Puntos: 0
El código funciona perfectamente, lo que hace es buscar todas las correspondencias CON o SIN tilde en la base de datos independientemente de lo que hayas puesto en el textbox, pruébalo y verás como si que funciona.

Saludos
  #13 (permalink)  
Antiguo 23/07/2003, 15:04
 
Fecha de Ingreso: abril-2001
Mensajes: 293
Antigüedad: 23 años
Puntos: 0
okis lo probe y funciona! !
  #14 (permalink)  
Antiguo 27/05/2009, 17:16
 
Fecha de Ingreso: mayo-2009
Mensajes: 1
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Ignorar tildes en asp

Necesito ayuda este es el codigo que tengo del buscador, como incorporo el codigo para omitir las tildes????


Sub BusquedaExacta (strFrase)
Dim adoRS
Dim strResultado
Dim strInicio
Dim strFinal
Dim nResultados

'strSql = "Exec BusquedaCateSimple_sp '" & strFrase&"','" & strSiguiente & "'"
strSql = "select top 500 * from VIEW_DATOS_ANUNCIOS where DESCRIPCION_ESPANOL like '%" & strFrase &"%'" & _
" order by DESCRIPCION_ESPANOL"
'Response.write strSql & "<br>"
set adoRS = CreateObject("ADODB.Recordset")
adoRs.Open strSql, Application("Conexion")

If not adoRS.EOF and not adoRS.BOF then
strResultado = ObtieneResultado(CTE_BUSQUEDA_CATEGORIA, adoRS, 2, 500, "", "", strSiguiente, nResultados)
EscribeInicioTablaResultadoBusqueda "Encontrados <b>" &nResultados& "</b> resultados de la búsqueda de: <b>" & strFrase & "</b>"
Response.write strResultado
EscribeFinalTablaResultadoBusqueda
Else
Response.write "<Font class=""Resultado"">No hay resultados con esa busqueda por favor revise los datos ingresados</font>"
End if
adoRS.Close
End Sub



Estoy copiando el codigo justo como los postearon aki, soy nuevo en esto gracias


Function sinAcentos(Str)
Dim CurLtr
For x = 1 To Len(Str)
CurLtr = Mid(Str, x, 1)
Select Case CurLtr
Case "a", "à", "á"
sinAcentos = sinAcentos & "[aàá]"
Case "e", "é", "è"
sinAcentos = sinAcentos & "[eéè]"
Case "i", "ì", "í"
sinAcentos = sinAcentos & "[iìí]"
Case "o", "ò", "ó"
sinAcentos = sinAcentos & "[oòó]"
Case "u", "ù", "ú"
sinAcentos = sinAcentos & "[uùú]"
Case "n", "ñ", "Ñ"
sinAcentos = sinAcentos & "[nñÑ]"
Case Else
sinAcentos = sinAcentos & CurLtr
End Select
Next
End Function
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:10.