URGENTE: Duda con treeview

Hola agdsys
Espero que puedas resolverme el problema ya que es urgente.
Te explico, he creado un treeview y a la propiedad data le he asignado una cadena con varios campos: "cod_usuario;nombre;cargo" separados por ";"
Como puedo hacer para que a la hora de tratar esta cadena me asigne a las variables ls_codusuario, ls_nombre y ls_cargo lo que le corresponde entre los ";".
Espero tu ayuda
Gracias de antemano. Saludos
ivan

1 Respuesta

Respuesta
1
En concreto es simple debes localizar cada punto y coma ";", y cada uno ocupa una intentar 1, 2, 3, ... etc
cada intentar del punto y coma es la intentar del dato por ejemplo
0001;jorge martinez;operador
El dato 1 es 0001 que es el código del usuario, el 2 es el nombre y el tres el puesto,
La manera de dar con cada punto y coma es
primero utilizar la función PUES(), la cual te indica la intentar de una cadena entre otra, en este caso buscara el punto y coma
De todas formas, yo personalmente me he construido una funcioncita la que llama SUBPARM(<cadena>, <posicion>)
Simple la cadena que tienes con los puntos y coma, y la intentar del dato, esta devuelve un valor string, por lo que si es numero, fecha, o cualquier otro que no sea string hay que convertirlo utilizando las funciones correspondientes, por ejemplo
DEC() --> para decimales
LONG() --> para datos LONG
DATE() --> fecha
Bueno te preguntaras y como hago eso.
No te preocupes te mando el fuente.
/*
Programó: Antonio García
Fecha: Guatemala, 7 de Abril de 1,999
Propósito: Dividir en Porciones cParam recibido y devolver la porción que
Corresponde a el numero integrado en nSub
Parámetros: cParam -> un String con varios datos divididos con ; (punto y coma)
NSub -> la intentar del dato si excede el resultado en cReturn es ''
*/
ANY xRet
STRING cReturn = ''
STRING cCadena
STRING cDato
BOOLEAN lQuit = FALSE
INTEGER nPos = 0
INTEGER nDato = 0
INTEGER nLen = 0
IF NOT ( (cParam = '') OR ISNULL(cParam) ) THEN
nLen = LEN(cParam)
cCadena = cParam
IF (MID(cParam, nLen, 1) = ';') THEN
cCadena += ''
ELSE
cCadena += ';'
END IF
xRet = SETNULL(cReturn)
DO WHILE NOT lQuit
IF NOT lQuit THEN
nLen = LEN(cCadena)
nPos = POS(cCadena, ';', 1)
IF (nPos > 0) THEN
nDato ++
cDato = MID( cCadena, 1, nPos - 1)
cCadena = MID( cCadena, nPos + 1)
IF (nDato = nSub) THEN
cCadena = ''
cReturn = cDato
END IF
ELSE
cCadena = ''
cReturn = ''
END IF
END IF
lQuit = NOT (cCadena = '')
LOOP
ELSE
xRet = SETNULL(cReturn)
END IF
RETURN( cReturn )
Hola agdsys:
La función que me has mandado se me queda colgada en un bucle, pero me ha servido mucho para entender el funcionamiento de las funciones MID y PUES con lo que ya puedo resolver mi problema.
Gracias por la rapidez de tu respuesta
Saludos. ivan

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas