ayuda de como extraer las iniciales de un nombre de un campo

324 views
Skip to first unread message

Marcelo Barberis

unread,
Oct 21, 2010, 1:19:42 PM10/21/10
to publice...@googlegroups.com
ESTIMADOS AMIGOS 
Necesito que me den una mano en esto
Tengo un campo de productores_name y otro campo codigo
Tengo un form para llenar los datos personales de los productores
alli tengo 2 cuadros de textos 1 para codigo estado enabled .f. y otro 
para llenar los productores, la consulta es como puedo hacer para extraer
solo las iniciales del nombre de los productores para generar el codigo
*
Yo escribo en el cuadro de Productores: ALEJANDRO MARCELO BARBERIS GUTIERREZ
y quiero que me genere automaticamente el codigo: AMBG01 o AMBG_01
Pero si hay otra persona cuyo nombre coincida con las iniciales anterior poner AMBG_02
Por decirles Nombre del productor: ARMANDO MIGUEL BARRIENTOS GUZMAN
Esto me tendria que generar AMBG_02

En el diseño de la tabla si o si tiene que ir 1 solo campo para el nombre no dividido en 2 campos
si habria 2 campos seria un poco mas facil, extraeria las iniciales de cada campo pero me piden
que tenga solo 1 campo para el nombre.

Seria conveniente cuando uno este escribiendo el nombre evaluar la pulsacion de la tecla 
de espacio en el teclado para poder extraer la inicial de la cadena escrita antes de pulsar
la barra de espacio en el teclado? digo se me viene a la mente que se podria hacer asi.

Bueno si me dan una mano con esto se los agradeceria mucho me sirve para avanzar en mi proyecto
Marcelo Barberis

Guillermo MDQ

unread,
Oct 21, 2010, 1:34:54 PM10/21/10
to Comunidad de Visual Foxpro en Español
Lo podes hacer con las funciones GetWordCount (Cuenta el número de
palabras de una cadena) y GETWORDNUM(Devuelve la palabra especificada
de una cadena).

Cantidad=GetWordCount (Thisform.txtTexto.value)

lcCodigo=""
FOR I=1 TO cantidad
lcCodigo=lcCodigo+LEFT(GETWORDNUM(Thisform.txtTexto.value,I),1)
ENDFOR

Saludos
Guillermo

Hugo C.

unread,
Oct 21, 2010, 1:39:53 PM10/21/10
to Comunidad de Visual Foxpro en Español
Podria ser algo como esto :

CLEAR
? Iniciales("ARMANDO MIGUEL BARRIENTOS GUZMAN")

FUNCTION Iniciales(lcNombre AS String)
LOCAL lcIniciales, lcCadena, lnI
lcIniciales = ""
lcCadena = "*"
lcNombre = " " + ALLTRIM(lcNombre) + " "
lnI = 1
DO WHILE NOT EMPTY(lcCadena )
lcCadena = STREXTRACT(lcNombre, " ", " ", lnI)
lcIniciales = lcIniciales + LEFT(lcCadena , 1)
lnI = lnI + 1
ENDDO
RETURN lcIniciales


Saludos.

ultraton500

unread,
Oct 21, 2010, 2:26:42 PM10/21/10
to Comunidad de Visual Foxpro en Español
En el otro grupo te dejé la respuesta.
Saludos,
Javier.

Luis Maria Guayan

unread,
Oct 21, 2010, 3:23:51 PM10/21/10
to publice...@googlegroups.com
lcCadena = "ALEJANDRO MARCELO BARBERIS GUTIERREZ"
? CHRTRAN(PROPER(lcCadena),CHRTRAN(PROPER(lcCadena),"ABCDEFGHIJKLMNOPQRSTUVWXYZ",""),"")

Luis María Guayán
Tucumán, Argentina
_________________________
http://www.PortalFox.com
Nada corre como un zorro
_________________________

GeoSys Diseño de Software

unread,
Oct 21, 2010, 4:47:53 PM10/21/10
to publice...@googlegroups.com
Que bien maestro, hace fácil lo difícil.

Mis respetos.


Anthony Contreras Peralta


Costa Rica

Guillermo MDQ

unread,
Oct 21, 2010, 5:16:17 PM10/21/10
to Comunidad de Visual Foxpro en Español
Muy bueno, Luis Maria.
Que simpleza para hacer las cosas.

Saludos
Guillermo


On 21 oct, 17:47, GeoSys Diseño de Software <geosy...@gmail.com>
wrote:

Richard Gaviria

unread,
Oct 21, 2010, 5:51:13 PM10/21/10
to Grupo VFP
Algo muy similar :

 
lcCadena = "ALEJANDRO MARCELO BARBERIS GUTIERREZ"
? CHRTRAN(PROPER(lcCadena),"abcdefghijklmnñopqrstuvwxyz ","")
 
Saludos.
 
Richard D. Gaviria

 

Date: Thu, 21 Oct 2010 16:23:51 -0300
From: luis...@portalfox.com
To: publice...@googlegroups.com
Subject: Re: [vfp] ayuda de como extraer las iniciales de un nombre de un campo

Walter R. Ojeda Valiente

unread,
Oct 21, 2010, 6:25:28 PM10/21/10
to publice...@googlegroups.com
Hola Richard

Casi, casi, funciona bien salvo cuando alguna letra está acentuada (sí, las mayúsculas también pueden acentuarse).

Lo correcto es:
? CHRTRAN(PROPER(NOMBRE),"abcdefghijklmnñopqrstuvwxyzáéíóúü ","")

Saludos.

Walter.

Guillermo MDQ

unread,
Oct 21, 2010, 6:28:03 PM10/21/10
to Comunidad de Visual Foxpro en Español
Un consulta Marcelo, siempre ingresan el nombre del productor primero
y despues el apellido ?,
o pueden ingresarlo tambien Apellido primero y despues el Nombre, es
indistinto para tu forma de crear tu codigo ?

Saludos
Guillermo


On 21 oct, 18:51, Richard Gaviria <rgavi...@msn.com> wrote:
> Algo muy similar :
>
> lcCadena = "ALEJANDRO MARCELO BARBERIS GUTIERREZ"
> ? CHRTRAN(PROPER(lcCadena),"abcdefghijklmnñopqrstuvwxyz ","")
>
> Saludos.
>
> Richard D. Gaviria
>
> Date: Thu, 21 Oct 2010 16:23:51 -0300
> From: luisma...@portalfox.com
> To: publice...@googlegroups.com
> Subject: Re: [vfp] ayuda de como extraer las iniciales de un nombre de un campo
>
> lcCadena = "ALEJANDRO MARCELO BARBERIS GUTIERREZ"
> ? CHRTRAN(PROPER(lcCadena),CHRTRAN(PROPER(lcCadena),"ABCDEFGHIJKLMNOPQRSTUVWXYZ",""),"")
>
> Luis María Guayán
> Tucumán, Argentina
> _________________________http://www.PortalFox.com

Walter R. Ojeda Valiente

unread,
Oct 21, 2010, 6:40:38 PM10/21/10
to publice...@googlegroups.com
Para estos casos, siempre la mejor política es escribir primero los apellidos, luego una coma y luego los nombres. Por ejemplo:

PEREZ, JUAN es lo correcto, en cambio
JUAN PEREZ es incorrecto

¿por qué? por tres motivos:
1. Si se hace de la segunda forma, algunos usuarios escribirán primero los nombres y luego los apellidos. Otros harán al revés. O el mismo usuario hoy escribe de una forma y mañana de otra. Puede ser una mescolanza terrible cuando hay miles de registros.
2. Si se hace de la segunda forma es difícil asegurarse que una palabra sea un nombre o un apellido. Por ejemplo: JUAN CARLOS PEREZ tiene dos nombres y después un apellido, en cambio: JUAN PEREZ MARTÍNEZ tiene un nombre y después dos apellidos. Podemos decir: "bueno, la primera palabra es un nombre y la última un apellido pero ¿y la segunda palabra qué cornos es?"
3. En el caso de los nombres y apellidos occidentales es difícil confundirse, la gran mayoría de los usuarios los escribirán bien, pero ¿cuántos saben en "Yuan Fi Lu" qué palabra/s corresponden al nombre y qué palabra/s al apellido?

Si se debe escribir de la primera forma y el usuario no introduce la coma, se le muestra un mensaje de error, avisándole que la forma correcta es APELLIDOS + ", " + NOMBRE.

Esa práctica disminuye grandemente los errores, practicamente los evita a casi todos.

Saludos.

Walter.

Guillermo MDQ

unread,
Oct 21, 2010, 7:02:24 PM10/21/10
to Comunidad de Visual Foxpro en Español
A eso apuntaba con la pregunta, lo correcto siempre es ingresar el
apellido primero.
Y para el caso de que ingresen una coma, habria que sacarla antes de
aplicar las funcionen proporcionadas para extraer las iniciales, sino
cambian los resultados retornados.

Saludos
Guillermo

Richard Gaviria

unread,
Oct 21, 2010, 8:13:36 PM10/21/10
to Grupo VFP
Tienes razón Walter, era un ejemplo en genérico, se pueden realizar las variantes que se necesiten.
 
Saludos.
 
Richard

Marcelo Barberis

unread,
Oct 26, 2010, 12:37:14 PM10/26/10
to publice...@googlegroups.com
bueno amigos
gracias por responder a mi consulta, recien baje todos sus aportes y lo pondre a prueba a ver cual me funciona o se adapta a mi programa.
Sobre la consulta de que va primero, aqui en donde vivo yo siempre en la mayoria de los casos he visto que ponen primero el nombre y despues el apellido y ademas todas las personas tienen dos apellidos, paterno y materno y tambien en la mayoria de los casos tienen un solo nombre. aqui en el sistema que estoy haciendo todos los productores estan escritos con el nombre primero y despues el apellido. pero se puede configurarlo para que siempre escriban primero el apellido digo
Gracias por su aporte.
Marcelo de Bolivia

Walter R. Ojeda Valiente

unread,
Oct 26, 2010, 1:25:35 PM10/26/10
to publice...@googlegroups.com
Hola Marcelo

Yo te aconsejo que escriban el/los apellido/s, luego una coma, y luego el/los nombre/s.

O sea: APELLIDOS + ", " + NOMBRES

Eso te evitará confusiones.

Lo único que debes hacer es asegurarte que haya una coma. Si no la hay, muestras un mensaje de error. Si los usuarios no están acostumbrados a escribir así, al principio les molestará pero se acostumbrarán pronto. Tú diles que así debe hacerse si no quieren escribir los nombres y los apellidos en campos separados.

Saludos.

Walter.

Marcelo Barberis

unread,
Oct 26, 2010, 1:37:06 PM10/26/10
to publice...@googlegroups.com
Gracias Walter por tu consejo lo tomare en cuenta
Marcelo
Reply all
Reply to author
Forward
0 new messages