problemas con acento

751 views
Skip to first unread message

extremo

unread,
Apr 8, 2011, 5:11:25 PM4/8/11
to Comunidad de Visual Foxpro en Español
Hola foxeros

Tengo una tabla que contiene el siguiente dato: "apéndice". Como ven
el dato esta con acento , asi tengo muchos mas ejemplos. el problema
esta en que el usuario cuando busca la palabra apendice sin acento el
programa no lo encuentra, asi sucede con todos los registros sin
acento. alguna idea de como poder hacer que el usuario al buscar
apendice sin acento pueda encontrarlo?. La BD que uso es SQL2000 y
VFP7

Gracias y bendiciones




Walter R. Ojeda Valiente

unread,
Apr 8, 2011, 5:31:36 PM4/8/11
to publice...@googlegroups.com
Tienes tres opciones:

1. Enseñarles a escribir correctamente en castellano a tus usuarios (esa es la más difícil)

2. Utilizar la función StrTran() antes de enviar la consulta, algo como:
    lcTexto = "apéndice"
    * Buscar el texto
    IF NOT FOUND()
      lcTexto = StrTran(lcTexto, "á", "a")
      lcTexto = StrTran(lcTexto, "é", "e")
      ...
      * Buscar el nuevo texto
    ENDIF

3. Hay una solución más corta, pero no la recuerdo ahora, no estoy frente a mic compu.

Saludos.

Walter.

(por supu, sin bendiciones, ni nada de eso).

Trento

unread,
Apr 8, 2011, 6:39:41 PM4/8/11
to Comunidad de Visual Foxpro en Español
Ojalá la solución fuera la primera, Walter.

La cuestión de los acentos es simplemente saber cómo funciona nuestro
propio idioma.

En fin... que para caso práctico, la segunda opción que planteas, un
poco ampliada, sería:

lcBuscar = CHRTRAN( lcTexto, "áéíóúü", "aeiouu")


Saludos.

extremo

unread,
Apr 9, 2011, 2:04:11 PM4/9/11
to Comunidad de Visual Foxpro en Español
gracias pero no me funciono ya que en el ejemplo la palabra apendice
lo buscaria de una de las dos formas:

x= "apendice"

ó

x= "ápéndícé"

lo cual ninguna de las dos situaciones me sirve

en la base de datos el valor es "apéndice"

y lo que necesito es que el motor de base de datos ignore el acento al
ejecutar la consulta.

Gracias de todos modos
> > (por supu, sin bendiciones, ni nada de eso).- Ocultar texto de la cita -
>
> - Mostrar texto de la cita -

Trento

unread,
Apr 9, 2011, 2:26:04 PM4/9/11
to Comunidad de Visual Foxpro en Español
Qué tal, extremo. Haz estas puebas


lcTexto = "apendice"

SELECT * FROM [TABLA] ;
CHRTRAN( [CAMPO] , "áéíóúü", "aeiouu") = lcTexto

Repite probando con:

lcTexto = "ápéndícé", lcTexto = "ápendice", lcTexto = "apendicé",
etc.....


Saludos.

Trento

unread,
Apr 9, 2011, 2:28:28 PM4/9/11
to Comunidad de Visual Foxpro en Español
Me faltó el WHERE, obviamente =( Qué barbaridad! =D


SELECT * FROM [TABLA] ;
WHERE CHRTRAN( [CAMPO] , "áéíóúü", "aeiouu") = lcTexto


Saludos

Alfonso Arias Lemas

unread,
Apr 10, 2011, 10:11:08 AM4/10/11
to publice...@googlegroups.com
Hola, si tu eres quien manejas la la entrada de datos pudieras antes de grabar convertir todas las bocales con acento en bocales sin acento y asi en la BD sólo guardas sin acento.
Saludos,
   Alfonso


De: extremo <protech...@gmail.com>
Para: Comunidad de Visual Foxpro en Español <publice...@googlegroups.com>
Enviado: sáb,9 abril, 2011 17:04
Asunto: [vfp] Re: problemas con acento

Víctor Hugo Espínola Domínguez

unread,
Apr 12, 2011, 1:33:03 AM4/12/11
to publice...@googlegroups.com
Tienes que definir funciones en VFP7 y SQL2000.

VFP7:

Function TxtNormal ( tcTextoEspanyol AS String )

*
* Convierte un texto en español a texto normalizado en minúsculas
*
* El texto normalizado no cotiene letras acentuadas
*
LOCAL lcTxtNormal As String

lcTxtNormal = LOWER( tcTextoEspanyol )
lcTxtNormal = CHRTRAN( lcTxtNormal, "áéíóúü", "aeiouu" )
RETURN ( lcTxtNormal )
*

SQL2000:

CREATE FUNCTION <usuario>.TextoNormalizado ( @cTextoEspanyol varchar( 100 ) )
RETURNS varchar( 100 )
AS
BEGIN
DECLARE @cTextoNormalizado varchar( 100 )

SET @cTextoNormalizado = LOWER( @cTextoEspanyol )
SET @cTextoNormalizado = REPLACE( @cTextoNormalizado, 'á', 'a')
SET @cTextoNormalizado = REPLACE( @cTextoNormalizado, 'é', 'e')
SET @cTextoNormalizado = REPLACE( @cTextoNormalizado, 'í', 'i')
.
.
.

RETURN ( @cTextoNormalizado )
END


lcTexto = "Apéndice"
lcTexto = TRIM( TxtNormal( lcTexto ) )

SELECT *, <usuario>.TextoNormalizado ( [CAMPO] ) AS TxtNormal FROM [TABLA] ;
WHERE CHARINDEX( lcTexto, TxtNormal ) > 0


Nota: La función de VFP7 puede ser sustituida por una sola sentencia

* lcTexto = TRIM( CHRTRAN( LOWER( lcTexto ), "áéíóúü", "aeiouu" ) )

Espero te sirva como una guía de referencia.
 
Víctor.

Alfonso Arias Lemas

unread,
Apr 12, 2011, 4:34:08 PM4/12/11
to publice...@googlegroups.com
Buen ejemplo Victor.....


De: Víctor Hugo Espínola Domínguez <vich...@gmail.com>
Para: publice...@googlegroups.com
Enviado: mar,12 abril, 2011 04:33
Asunto: Re: [vfp] problemas con acento

extremo

unread,
Apr 13, 2011, 9:14:37 AM4/13/11
to Comunidad de Visual Foxpro en Español
Gracias Victor,

Me ha ayudado a orientarme mas sobre este asunto, solo que adaptar el
sistema con mas de 300 formularios para realizar este tipo de busqueda
va ser un poco tedioso, ademas debo investigar un poco mas sobre que
tan pesada quedaria la consulta en una tabla con mas de 10.000.000 de
registros, por que tantos? porque es un sistema hospitalario y esa
informaciòn debe estar en la tabla, el historico es 10 veces mas
grande.

Eso si me interesa saber como o de que manera la ayuda de nuestro
mismo fox o de cualquier otro incluso cuando creo mis ayudas con html
help workshop al ir a la pestaña de busqueda estos pueden buscar
palabras en textos con y sin acento. Pienso que debe haber una forma
mas simple, el mismo google tambien tiene ese sistema de busqueda.

Seguire investigando mas, si doy con algo mas efectivo se los dare a
conocer.

Bendiciones


On 12 abr, 16:34, Alfonso Arias Lemas <ariasle...@yahoo.es> wrote:
> Buen ejemplo Victor.....
>
> ________________________________
> De: Víctor Hugo Espínola Domínguez <vichus...@gmail.com>
> El 8 de abril de 2011 18:11, extremo <protech.ven...@gmail.com> escribió:
>
> Hola foxeros
>
>
>
>
>
> >Tengo una tabla que contiene el siguiente dato: "apéndice". Como ven
> >el dato esta con acento , asi tengo muchos mas ejemplos. el problema
> >esta en que el usuario cuando busca la palabra apendice sin acento el
> >programa no lo encuentra, asi sucede con todos los registros sin
> >acento. alguna idea de como poder hacer que el usuario al buscar
> >apendice sin acento pueda encontrarlo?. La BD que uso es SQL2000 y
> >VFP7
>
> >Gracias y bendiciones- Ocultar texto de la cita -

edgar suarez kummers

unread,
Apr 13, 2011, 10:30:06 AM4/13/11
to publice...@googlegroups.com

De: extremo <protech...@gmail.com>
Para: Comunidad de Visual Foxpro en Español <publice...@googlegroups.com>
Enviado: mié,13 abril, 2011 08:14

Asunto: [vfp] Re: problemas con acento

Victor Hugo Mm

unread,
Sep 12, 2013, 10:14:38 PM9/12/13
to publice...@googlegroups.com
locate for sintilde(tabla.campo) = sintilde("texto a buscar")


procedure sintilde
parameter texto
resultado = strtran(strtran(strtran(strtran(strtran(texto,"á","a"),"é","e"),"í","i"),"ó","o"),"ú","u")
return resultado

(Se que es algo tarde, pero espero le sirva a alguien)

Ricardo Pina

unread,
Sep 12, 2013, 10:37:32 PM9/12/13
to Grupo VFP
Hola Victor Hugo Mm
 
Creo que es por el viernes no ?
Solamente +28 meses tarde
 
Creo que es mejor
 
CHRTRAN( "Texto con acentos varios", "áéíóúü", "aeiouu")
 
Y ya lo habían contestado hace 887 días atrás.
 
Saludos
 
 
--
            

                   Ricardo Pina

Desarrollo y Servicios Informáticos

                  Profesionales
               www.dsip.com.ar

 

 

Fidel Charny

unread,
Sep 13, 2013, 9:29:20 AM9/13/13
to publice...@googlegroups.com
Si después de 28 meses no consiguió sacar los tildes y todavía no le quitaron el "apéndice", entonces tal vez necesite esta función:
****************************
PROCEDURE SinTildes(xcTexto)
****************************
RETURN CHRTRAN(xcTexto,"àÀèÈìÌòÒùÙáÁéÉíÍóÓúÚâÂêÊîÎôÔûÛ",;
"aAeEiIoOuUaAeEiIoOuUaAeEiIoOuU")
ENDPROC

Nota de Viêrnès 13.

Luis Maria Guayan

unread,
Sep 13, 2013, 3:05:15 PM9/13/13
to publice...@googlegroups.com
Al menos tuvo la delicadeza de advertir que estaba atrasada la respuesta :-)

Ahora esperemos que reemplace los 5 STRTRAN() por solo 1 CHRTRAN() :-)


? CHRTRAN("Luis María Guayán", "áéíóúÁÉÍÓÚ","aeiouAEIOU")
? CHRTRAN("Tucumán, Argentina", "áéíóúÁÉÍÓÚ","aeiouAEIOU")
_________________________
http://www.PortalFox.com
Nada corre como un zorro
_________________________

Reply all
Reply to author
Forward
0 new messages