Progress - Leer una cadena o un string

   
Vista:

Leer una cadena o un string

Publicado por Afrika (48 intervenciones) el 16/10/2007 17:18:34
Muy buenos dias.

Necesito saber, por favor, como hago para leer una cadena. Esta pregunta será muy basica para ustedes, yo sin embargo soy nueva en esto. Necesito su ayuda por favor.

Necesito leer esto (esta en un campo en la base de datos. Todo esta junto, tal cual lo ven abajo):

2007-1N-CQW34-1-CUOTA

Necesito obtener APARTE (O EN UNA VARIABLE, COMO SEA!!) cada campo, es decir:

año: 2007
periodo: 1N
cod: CQW34-1
nombre: CUOTA

NOTA: Fijense que el codigo tiene un "-" pero algunos lo tienen y otros NO.

MUCHISIMAS GRACIAS DE ANTEMANO!!
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:Leer una cadena o un string

Publicado por Miguel (140 intervenciones) el 17/10/2007 17:29:37
Buen problema si no están separados por un guión (-) en todos los casos, espero que por lo menos si tengan la misma longitud todos los campos.

Se tendrían los siguientes casos:

A) Si siempre estuviera dividido por guiones:

registro = "2007-1N-CQW34-1-CUOTA"

ASSIGN lv-year = ENTRY(1,registro,"-")
lv-periodo = ENTRY(2,registro,"-")
lv-codigo = ENTRY(3,registro,"-")
lv-nombre = ENTRY(5,registro,"-").

Aquí habría que tener cuidado del guión del número de artículo, ya que al separar con un guión el registro, parecería que 1 sería la descripción del artículo.

B) En el caso de que no este separado por guiones pero que tengan un tamaño fijo de caracteres se tendría:

registro = "20071NCQW34-1CUOTA"

ASSIGN lv-year = SUBSTRING(registro,1,4)
lv-periodo = SUBSTRING(registro,5,2)
lv-codigo = SUBSTRING(registro,7,7)
lv-nombre = SUBSTRING(registro,14,24).

Aquí se requiere que el código siempre tenga la misma longitud de forma que si tienes un artículo DW200 el registro sería igual a:

registro = "20071NDW200 CUOTA"

De forma que por la longitud de los campos estaría especificado a que campo pertenece.

C) En caso de que el registro no tenga una longitud determinada de los campos, Es decir, que por ejemplo el periodo en algunos registros tenga 4 posiciones, en otros 2 y en otros 5.

Bueno en este caso si te deberían especificar que características tiene el registro para hacer la separación del registro.

Saludos.
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:Leer una cadena o un string

Publicado por Hernan (3 intervenciones) el 19/10/2007 20:34:08
DEF VAR ANIO AS CHAR NO-UNDO.
DEF VAR PERIODO AS CHAR NO-UNDO.
DEF VAR COD AS CHAR NO-UNDO.
DEF VAR NOMBRE AS CHAR NO-UNDO.

IF NUM-ENTRIES(CAMPO,'-') = 5 THEN DO:
/* CHEQUEO SI EL CAMPO TIENE 5 PALABRAS DIVIDIDAS POR -.
SI ES ASI ES PORQUE EL CODIGO TIENE UN - */
anio = ENTRY(1,CAMPO,'-').
periodo = ENTRY(2,CAMPO,'-').
cod = ENTRY(3,CAMPO,'-') + '-' + ENTRY(4,CAMPO,'-').
nombre = ENTRY(5,CAMPO,'-').
END.
ELSE /* SUPONGO QUE TIENE 4 PALABRAS */ DO:
anio = ENTRY(1,CAMPO,'-').
periodo = ENTRY(2,CAMPO,'-').
cod = ENTRY(3,CAMPO,'-') .
nombre = ENTRY(4,CAMPO,'-').
END.
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