Pregunta: | 60719 - SEPARAR NOMBRES COMPUESTOS |
Autor: | abel martinez |
Hola buenas tardes, necesito separar el campo nombre una base de datos DE VISUAL FOXPRO en apellido paterno, materno y nombre solo que tambien se encuentran nombres compuestos y de solo un apellido y nombre espero puedan ayudarme les dejo un ejemplo del tipo de nombres que exiten, gracias.
JARAMILLO DE LOS REYES JORGE LUIS TORRES DE LOS ANGELES CYNTHIA NALLELY ALVAREZ LOPEZ JULIO |
Respuesta: | ricardo soldini |
mira es facil solo debes recorrer el campo nombre asignado los caracters a una variable para seprar las partes de nombre y cuando te encuentras con los espacios intermedios aplicas una funcion que evalue si lo que separaste es parte del apellido o nombre compuesto
ej suponiendo que nombre este compesto de apellido pat, materno, nombres store spaces(30) to nombres, paterno, materno, nom_prov posicion=1 for i = 1 to len(mombre) if substr(nombre,i,1) != " " nom_prov =nom_prov + substr(nombre,i,1) else if !compuesto(nom_prov) do case case posicion= 1 paterno=nom_prov posicion=2 nom_prov=space(30) case posicion=2 materno=nom_prov posicion=3 nom_prov=sace(30) OTHERWISE NOMBRES=NOMBRES+NOM_PROV NOM_PROV=SPACE(30) ENDCASE ELSE NOM_PROV=NOM_PROV+" " && PARA QUE QUEDE EL APELLIDO COMO ES EJ 'DEL SOLAR' ENDIF FUNCTION COMPUESTO(NOMB) ES_COMP=.F. DO CASE CASE UPPER(ALLTRIM(NOMB))="DE" ES_COMP=.T. CASE UPPER(ALLTRIM(NOMB))="DEL" ES_COMP=.T. CASE UPPER(ALLTRIM(NOMB))="LAS" ES_COMP=.T. CASE UPPER(ALLTRIM(NOMB))="MC" ES_COMP=.T. CASE UPPER(ALLTRIM(NOMB))="O'" ES_COMP=.T. CASE UPPER(ALLTRIM(NOMB))="LA" ES_COMP=.T. CASE UPPER(ALLTRIM(NOMB))="LOS" ES_COMP=.T. CASE UPPER(ALLTRIM(NOMB))="LO" ES_COMP=.T. CASE UPPER(ALLTRIM(NOMB))="<lo que necesites" ES_COMP=.T. ENCASE RETURN(ES_COMP) |