Power Builder - Búsqueda sin distinguir tildes

 
Vista:

Búsqueda sin distinguir tildes

Publicado por NovatoX (41 intervenciones) el 15/07/2003 02:00:53
Un saludo coordial desde Perú.

Mi consulta es la siguiente, como hago para hacer un busqueda en un dw desde power con la funcion find, sin distinguir las tildes.

Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Búsqueda sin distinguir tildes

Publicado por Oscar (1178 intervenciones) el 15/07/2003 14:25:32
1. Primero creas una función (File/New/PB Object/Function) llamada sin acento. Es decir:
Nombre función: sin acento (string)
argumento: cadena(string)
El script de la función es: (perdón por lo feo del código):
Integer Posicion
String NuevaCadena
Cadena=lower(Cadena)
//Buscamos en la cadena la á
If match(Cadena,"\á")=TRUE then
//Hallamos su posición
Posicion=Int(pos(Cadena,"á"))
//Reemplazamos á por a
NuevaCadena=Replace(Cadena,Posicion,1,"a")
End If

If match(Cadena,"\é")=TRUE then
Posicion=Int(pos(Cadena,"é"))
NuevaCadena=Replace(Cadena,Posicion,1,"e")
End If

If match(Cadena,"\í")=TRUE then
Posicion=Int(pos(Cadena,"í"))
NuevaCadena=Replace(Cadena,Posicion,1,"i")
End If

If match(Cadena,"\ó")=TRUE then
Posicion=Int(pos(Cadena,"ó"))
NuevaCadena=Replace(Cadena,Posicion,1,"o")
End If

If match(Cadena,"\ú")=TRUE then
Posicion=Int(pos(Cadena,"ú"))
NuevaCadena=Replace(Cadena,Posicion,1,"u")
End If

//Si no encuentra cualquiera de las vocales: á,é,í,ó,ú
If match(Cadena,"[áéíóú]")=FALSE then
NuevaCadena=Cadena
End If

Return NuevaCadena
(CONTINUA...)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Búsqueda sin distinguir tildes (continuación)

Publicado por Oscar (1178 intervenciones) el 15/07/2003 14:31:43
2. Script en el evento modified del sle_1 (donde es suficiente escribir las primeras letras del nombre y pulsar ENTER)

Long ll_Fila
String ls_Busca

//Nombre, es la columna del dw donde quieres buscar
ls_Busca="SinAcento(Nombre) Like '"+SinAcento(sle_1.Text)+"%'"
ll_Fila=dw_1.Find(ls_Busca,1,dw_1.RowCount())

If ll_Fila=0 then
MessageBox("Aviso", "El nombre no existe")
Else
//Limpiamos el dw_1, de cualquier selección previa
dw_1.SelectRow(0, False)
//Nos vamos a la fila encontrada
dw_1.ScrollToRow(ll_Fila)
//Seleccionamos esa fila
dw_1.SelectRow(ll_Fila, True)
End if

Conclusión:
* Lo que hicimos en realidad fue primero quitar los acentos y convertir a minúsculas tanto la cadena que se busca como la cadena que se halla en la columna del dw; aunque por supuesto, no se modifica para nada esas cadenas.
* Probá con todas las situaciones posibles, si hallas algo que no funciona, se puede corregir.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar