FoxPro/Visual FoxPro - No me busca en la tabla si tengo acentos

   
Vista:

No me busca en la tabla si tengo acentos

Publicado por Juan (71 intervenciones) el 06/08/2013 14:23:02
Buenas tardes, tengo una tabla de clientes y los nombres están metidos con acentos por ejemplo yo abro la tabla ordenada por nombre y hago lo siguiente:

use cliente order nombre
seek 'José'

Pero no me encuentra nada. Alguien sabe porque y como habría que hacerlo.

Un saludo.
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

No me busca en la tabla si tengo acentos

Publicado por Fidel (558 intervenciones) el 06/08/2013 14:47:46
La idea pasa por corregir la tabla de clientes:
a) Conviene normalizar para todo con mayúsculas. En la entrada de datos, se necesita validar que no existan acentos y si existen, reemplazarlos por los caracteres admitidos. Puedes quitar las comas, los doble espacios y otros defectos comunes con un metodología similar.
b) Estudia la función INDEXSEEK() para utilizarla en lugar del comando SEEK. Es más rápida y más práctica.

1) Agrega a tu proyecto una función como esta:
PROCEDURE QuitaAcentos(xcString)
RETURN CHRTRAN(xcSTring,"áéíóúÁÉÍÓÚ","aeiouAEIOU")
ENDPROC

2) Corre una rutina de reparación, más o menos así
SELECT CLIENTES
SCAN
IF RLOCK()
REPLACE NOMBRE WITH UPPER(QuitaAcentos(Nombre))
UNLOCK
ENDIF
ENDSCAN

3) En el formulario de Altas y Modificaciones de Clientes, en el TExtBox donde admites el nombre del cliente, Evento Valid:
* VALID
this.Value=UPPER(QuitaAcentos(this.Value))



El tema es que los caracteres no son iguales. Fíjate en la tabla ANSI
1
2
3
4
5
6
7
Sin Acentos	Con Acentos
Vocal	Lower	Upper	Lower	Upper
a	97	65	225	193
e	101	69	233	201
i	105	73	237	205
o	111	79	243	211
u	117	85	250	218
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