Foros del Web » Programación para mayores de 30 ;) » Programación General »

Busqueda con acentos

Estas en el tema de Busqueda con acentos en el foro de Programación General en Foros del Web. Hola.. como le hago en VBasic para realizar una busqueda con acentos y eñes? es que si busco a Jose no me encuentra a José ...
  #1 (permalink)  
Antiguo 30/07/2002, 15:04
 
Fecha de Ingreso: junio-2002
Mensajes: 13
Antigüedad: 21 años, 10 meses
Puntos: 0
Busqueda con acentos

Hola.. como le hago en VBasic para realizar una busqueda con acentos y eñes?
es que si busco a Jose no me encuentra a José y pues asi esta bien chafa....

ahorita asi tengo la busqueda:
texto = InputBox("Dame el nombre del niño a inscribir: ", "Verificando...")
Set bd = OpenDatabase("C:\EMIA\EMIA.mdb")
Set tabla = bd.OpenRecordset("SELECT Nombre FROM Alumnos")
tabla.FindFirst "Nombre='" & texto & "'"
If tabla.NoMatch Then
....
else
....
end if


y otra cosa, como le hago para ya no usar en una busqueda el findfirst? ya puse esto:
Set tabla = bd.OpenRecordset("SELECT * FROM Niño WHERE Nombre='" & texto & "'")

pero luego no se como hacer el if de si lo encuentra o no, como le hago?
gracias!!!
  #2 (permalink)  
Antiguo 01/08/2002, 02:49
 
Fecha de Ingreso: abril-2002
Mensajes: 438
Antigüedad: 22 años
Puntos: 2
Re: Busqueda con acentos

A mí no se me ocurre otra forma que construyendo la cadena sql con un like, ya que al fin y al cabo o y ó tienen distinto ascii. Así que puedes hacer lo siguiente:

- Reemplazar en la variable texto la vocal acentuada que tengas por la cadena [vocal_no_acentuada, vocal_acentuada], es decir, si por ejemplo mete José, tendrías:
texto="José" (originalmente)
texto="Jos[e,é]" (después de reemplazar)

Y luego el like y funcionaría bien. Ahora bien, me preguntarás: ¿Y si mete Jose como puedo hacer para que me busque José? Eso conllevaría tener un corrector ortográfico que supiera donde va el acento en una palabra que no se ha acentuado, por ejemplo: si el tío pone "camion" tendrías que tener un mecanismo de saber que es camión y no cámion o camíon, ¿me comprendes? Una solución drástica pero chapuzera sería hacer eso con todas vocales, es decir, si mete camion, crear la cadena de consulta:
"c[a,á]m[i,í][o,ó]n", la verdad creo que en un 99.9999999999% de los casos esto a pesar de ser muy rústico funcionaría bien. Dudo que hay alguna palabra que sea completamente diferente dependiendo de donde se acentúe, y así recogerías todos los casos posibles.

No sé, he esperado unos días a que alguien dijera algo más brillante que esto pero como nadie reponde podrías probar con esto.

Saludos.
  #3 (permalink)  
Antiguo 01/08/2002, 02:53
 
Fecha de Ingreso: abril-2002
Mensajes: 438
Antigüedad: 22 años
Puntos: 2
Re: Busqueda con acentos

Ah, respecto a lo segundo puedes usar la función del recordset RecordCount, o bien un simple

if not tu_recordset.eof then
sentencias cuando ha encontrado algo
else
sentencias cuando no ha encontrado nada
end if

Saludos.
  #4 (permalink)  
Antiguo 01/08/2002, 08:22
 
Fecha de Ingreso: junio-2002
Mensajes: 13
Antigüedad: 21 años, 10 meses
Puntos: 0
Re: Busqueda con acentos

pues a intentar tu sugerencia, gracias de todas formas...
saludos...
  #5 (permalink)  
Antiguo 01/08/2002, 10:03
 
Fecha de Ingreso: abril-2002
Mensajes: 438
Antigüedad: 22 años
Puntos: 2
Re: Busqueda con acentos

No lo digas con resignación, que posiblemente es que no haya otra manera de hacerlo, desde luego no tienes en VB una función que sea TransformaAcentos, y si la hay es porque alguien que no es de la cuadrilla de babosos del bill gates la ha programado a pelo. Pero lo que te he dicho, funciona bien seguro, y no veo tan mala la solución que te he dado como para decir "gracias de todas formas".
  #6 (permalink)  
Antiguo 01/08/2002, 10:07
 
Fecha de Ingreso: junio-2002
Mensajes: 13
Antigüedad: 21 años, 10 meses
Puntos: 0
Re: Busqueda con acentos

jejeje.. no quise decir eso, es que tenia flojera hace rato, pero ya la empece a hacer hace 10 minutos....

gracias!!! :)
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 09:54.