GeneXus - Mostrar cadena larga en varias líneas

 
Vista:

Mostrar cadena larga en varias líneas

Publicado por wend (6 intervenciones) el 06/12/2007 01:46:25
SAludos a todos los foristas, soy nuevo en GX, estoy trabajando con esta herramienta desde hace una semana y ahora se me presenta un inconveniente y es el siguiente:

Quiero mostrar un texto largo en varias líneas (este texto lo obtengo concatenando varios registros de autores de libros) en una variable. Por ejemplo:

Resultado de la concatenación: 'Juan R. Cruz /n Joan Saslow /n Allen Ascher'
y quiero que se muestre así:

Juan R. Cruz
Joan Saslow
Allen Ascher

Donde '/n' (solo es un ejemplo) es lo que me permite hacer el salto de línea.
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
Imágen de perfil de Patricio Ojeda V
Val: 73
Oro
Ha aumentado 1 puesto en GeneXus (en relación al último mes)
Gráfica de GeneXus

RE:Mostrar cadena larga en varias líneas

Publicado por Patricio Ojeda V (475 intervenciones) el 11/12/2007 00:18:18
No Entiendo

Podrias explicar el ¿Por que concatenas esos nombres en una variable si despues necesitas separarlos?

Patricio Ojeda V
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:Mostrar cadena larga en varias líneas

Publicado por wend (6 intervenciones) el 11/12/2007 01:41:59
Gracias por responder Patricio.

No, no los voy a separar, están separados y los quiero unir pero no quiero que se muestren seguido sino un autor debajo de otro.

Estoy haciendo un sistemita para el control de una biblioteca y en el formulario de préstamos quiero mostrar algunos datos del libro entre ellos los autores que puede ser uno o varios.

Estoy trabajando con Genexus 8 y SQL Server generando a Visual Basic.
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
Imágen de perfil de Patricio Ojeda V
Val: 73
Oro
Ha aumentado 1 puesto en GeneXus (en relación al último mes)
Gráfica de GeneXus

RE:Mostrar cadena larga en varias líneas

Publicado por Patricio Ojeda V (475 intervenciones) el 11/12/2007 15:10:00
Te pregunto nuevamente... ¿Por que quieres unir los Autores? Eso es lo que no entiendo....

Patricio Ojeda V
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:Mostrar cadena larga en varias líneas

Publicado por wend (6 intervenciones) el 11/12/2007 17:51:15
Mira, tengo un formulario donde hago las prestaciones de libros.

En este formulario visualizo algunos datos del libro a prestar como son el ID, el título y los autores de ese libro.

En la BD estan involucradas tres tablas: Libro, Autor y Libros1(esta la creó GX como resultado de la destrucción de varios a varios entre libros y autores.

Entonces, para visualizar los autores hice un procedimiento para obtener los nombres de todos los autores de un libro, pero se almacena en una cadena muy larga (un autor a continuación de otro separado por un guión) y no se ve bien.

Para visualizar los autores en el formulario de préstamos uso una variable y quiero visualizar un autor debajo de otro.

En la tabla Libros1 existen dos campos: libro_ID y autor_ID.

Quise poner una grilla en el formulario y que me recupere los autores según el ID del libro pero no me funcionó (solo dispongo de los dos campos), no se como hacer que aparezcan los nombres de los autores pues eso está en la otra tabla(Autores)
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
Imágen de perfil de Patricio Ojeda V
Val: 73
Oro
Ha aumentado 1 puesto en GeneXus (en relación al último mes)
Gráfica de GeneXus

RE:Mostrar cadena larga en varias líneas

Publicado por Patricio Ojeda V (475 intervenciones) el 13/12/2007 19:14:35
ESTO ES LO QUE NO ENTIENDO

Tu me dices que ---- > (Entonces, para visualizar los autores hice un procedimiento para obtener los nombres de todos los autores de un libro, pero se almacena en una cadena muy larga (un autor a continuación de otro separado por un guión) y no se ve bien. )

Pero mi pregunta es por que lo haces asi, porque no recorres los autores del libro y los muestras inmediatamente, en vez de asignarlos y concatenarlos para luego separarlos. Esto ultimo es lo que realmente no le hayo sentido.

Pero en fin, si lo que quieres es separar esa "famosa ensalada" de autores que creaste, debes hacerlo mediante la utilizacion de las reglas strsearch, substr, len y quizas otras.

Estas funciones te pueden ayudar,

Saludos

Patricio Ojeda V
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

YO LO SOLUCIONE ASI

Publicado por tony (2 intervenciones) el 20/04/2016 18:21:26
Se q ya paso de esta duda hace mucho pero me molesta la actitud de esta persona. Patricio no deberias hacer tantas preguntas, si no quieres ayudar no perjudiques. Al final tu respuesta no sirve de nada para la pregunta puntual.

Respondiendo a la duda por si a alguna persona le sirve:
este es un codigo q realice utilizando la funcion GXMLines([cadena dividir], [cantidad de caracteres en que se dividira la cadena])
&zline = GXMLines(&PMPedDetMaterialDescripcion, 23) // devuelve un valor numeric de la division de la cadena ej SI la longitud de la cadena es 30 devolvera en &zline 2, esto es para el control del for
1
2
3
4
5
6
7
8
9
10
for &e = 1 to &zline //&e y &zline son dos variables numericas 
	&materialDesc = GXGetMLi(&PMPedDetMaterialDescripcion, &e, 23)// &materialDesc es una variable de tipo varchar la cual toma la primera division de la cadena
	if NOT &materialDesc.IsEmpty() AND &e = 1
		PRINT A3	//en este print imprimimos la primera division de la cadena
	else
		if not &materialDesc.IsEmpty()
			PRINT A4 // se crea otro printblock para imprimir las demas cadenas de la division 
		endif
	endif
endFor

recordemos q la variable a imprimir en los printblocks PRINT A3 Y PRINT A4 es la variable &materialDesc.

Espero que sea de ayuda para alguien, 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

YO LO SOLUCIONE ASÍ / Gracias tony

Publicado por SR (1 intervención) el 29/08/2020 00:09:11
Excelente respuesta de tony lo solucioné tal cual dijo para un layout que implemento
en los reportes en pdf del sistema, la linea era tan grande que se salía del layout la
acorté y la dividí en 3 variables, dejo el código aquí por si le sirve a alguien más:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
/*Yo traigo mi cadena en la variable &vTitulo por parámetros por que lo pasaba directo
pero ahora que tuve ese problema la dividí en 3 pero la reutilizo en el código debajo*/
 
&CadenaTitulo = &vTitulo
&nlin1 = GXMLines(&CadenaTitulo.Trim(), 64)
 
for &e = 1 to &nlin1
	&MsjTitulo = GXGetMli(&CadenaTitulo.Trim(), &e, 64)
	If not &MsjTitulo.IsEmpty() and &e = 1
		&vTitulo = &MsjTitulo
	Else
		if not &MsjTitulo.IsEmpty() and &vTitulo2.IsEmpty()
			&vTitulo2 = &MsjTitulo
		Else
			if not &MsjTitulo.IsEmpty() and &vTitulo3.IsEmpty()
				&vTitulo3 = &MsjTitulo
			EndIf
		EndIf
	EndIf
EndFor
 
Print Encabezado2

PD: Nefasta la actitud de Patricio Ojeda si no ayudan absténganse de comentar
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:Mostrar cadena larga en varias líneas

Publicado por Emilio (1 intervención) el 04/07/2019 04:25:24
que pinche actitud.
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:Mostrar cadena larga en varias líneas

Publicado por patric cresta (1 intervención) el 18/11/2009 17:27:06
vamos a ver patricio ojeda, no tienes que entender nada, solo tienes que responder a la jodida pregunta que es como se hace un salto de linea, si en c es \n, como es en genexus?? Pero gracias a magdalena ya sabemos que es con newline()

Es a si de sencillo. NEWLINE() tanto te costaba responder o es que no conocias la respuesta. ?
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
Imágen de perfil de Edgar
Val: 9
Ha disminuido 1 puesto en GeneXus (en relación al último mes)
Gráfica de GeneXus

RE:Mostrar cadena larga en varias líneas

Publicado por Edgar (31 intervenciones) el 22/01/2019 23:44:06
Hola patricio sabes como puedo insertar información en varias lineas para apps? lo que pasa es que cuando ingreso una cadena larga jamas hace el salto de linea y sigue de largo hacia la derecha y yo quiero mostrarlo en varias lineas.
Gracias.
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:Mostrar cadena larga en varias líneas

Publicado por Magdalena (19 intervenciones) el 04/04/2008 19:09:03
Hola.. yo entiendo perfectamente lo que te pasa...
necesito hacer esactamente lo mismo pero con otros campos de una base de datos... para enviarlos por correo...

si has averiguado algo .. me echarias una manitoa mi.. por favor
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:Mostrar cadena larga en varias líneas

Publicado por Magdalena (9 intervenciones) el 09/10/2008 16:15:51
Compadre por si le sirve... yo al final encontre la funcion .... NewLine(), funciona .. la raja para generar reportes en lineas una bajo la otra de una bariable que contiene un texto concatenado ..

saludos magda
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:Mostrar cadena larga en varias líneas

Publicado por Giovanny JImenez (10 intervenciones) el 14/11/2008 21:07:36
Tengo un campo en un subfile de 600 caracteres , es la linea de una factura, como hago en el reporte para imprimir estos 600 caracteres en varias lineas?
gracias
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:Mostrar cadena larga en varias líneas

Publicado por [email protected] (1 intervención) el 20/05/2014 23:09:56
Magda,
como usaste el Newline() tengo un problema con un archivo txt,
Gracias,
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

Mostrar cadena larga en varias líneas

Publicado por Pato (2 intervenciones) el 13/10/2015 19:34:43
hola, encontraste otra funcion diferente a newline()? es que a mi me deja mucho espacio entre linea y linea, yo quiero q sea pegado. gracias .. algo asi me muestra:
Juan R.Cruz

Joan Salow

Allen Ascher
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

Mostrar cadena larga en varias líneas

Publicado por Javier Ramirez Veliz (1 intervención) el 16/01/2016 04:39:52
En mi caso el NewLine no funciona, ni el '\n'.

Una solucion que a mi en lo personal me funciono, es que:

&TextoLargo => Texto de 500 caracteres, donde se encuentra la data
&TextoLargo2 => Texto de 500 caracteres, donde se almacenara la data trabajada y se imprimira en el layout 'Cuerpo'

En el Layout, se coloque la variable &TextoLargo, modificando la propiedad FORMAT a HTML,
El problema si solo se deja asi, es que la fuente aparece demasiado grande, entonces :

En la variable colocar como prefijo y sufijo lo necesario para dividirlo en lineas, y dar un formato adecuado a las líneas.
Ejmp
&Linea1 = &TextoLargo.SubString(0,10)
&Linea2 = &TextoLargo.SubString(10,10)
.
.
.
&LineaN = &TextoLargo.SubString(n,10)

&TextoLargo2 += '<div style="font-size:8px">' + &Linea1 + '</div><br>'
&TextoLargo2 += '<div style="font-size:8px">' + &Linea2 + '</div><br>'
.
.
.
&TextoLargo2 += '<div style="font-size:8px">' + &LineaN + '</div><br>'

print Cuerpo


Sabiendo que esto es funcional, se podrian hacer mucho mas cosas con esta propiedad.
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

Mostrar cadena larga en varias líneas

Publicado por Pato (2 intervenciones) el 20/04/2016 18:26:24
listo gracias, voy a probarlo
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

Mostrar cadena larga en varias líneas de manera generica

Publicado por tony (2 intervenciones) el 20/04/2016 18:33:56
lo puedes hacer con este codigo de manera general para cualquier cadena larga

este es un codigo q realice utilizando la funcion GXMLines([cadena dividir], [cantidad de caracteres en que se dividira la cadena])
1
2
3
4
5
6
7
8
9
10
11
&zline = GXMLines(&PMPedDetMaterialDescripcion, 23) // devuelve un valor numeric de la division de la cadena ej SI la longitud de la cadena es 30 devolvera en &zline 2, esto es para el control del for
for &e = 1 to &zline //&e y &zline son dos variables numericas
&materialDesc = GXGetMLi(&PMPedDetMaterialDescripcion, &e, 23)// &materialDesc es una variable de tipo varchar la cual toma la primera division de la cadena
if NOT &materialDesc.IsEmpty() AND &e = 1
PRINT A3	//en este print imprimimos la primera division de la cadena
else
if not &materialDesc.IsEmpty()
PRINT A4 // se crea otro printblock para imprimir las demas cadenas de la division
endif
endif
endFor

codigo sin comentarios

1
2
3
4
5
6
7
8
9
10
11
&zline = GXMLines(&PMPedDetMaterialDescripcion, 23)
for &e = 1 to &zline
    &materialDesc = GXGetMLi(&PMPedDetMaterialDescripcion, &e, 23)
    if NOT &materialDesc.IsEmpty() AND &e = 1
        PRINT A3
    else
        if not &materialDesc.IsEmpty()
            PRINT A4
        endif
    endif
endFor

espero te sirva saludos y cualquier duda solo pregunta XD
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

Mostrar cadena larga en varias líneas de manera generica

Publicado por Antonio Marx (2 intervenciones) el 14/02/2017 18:57:10
Hola tony mira no entiendo mucho genexus como puedo hacerlo si tengo 4 nombres en una cadena pero quiero que imprima en 4 reglones uno debajo del otro como puedo hacerlo cuando encuentre un ; de el salto de linea. podrias ayudarme
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

Mostrar cadena larga en varias líneas

Publicado por Pedro (1 intervención) el 12/07/2017 14:55:30
Hola gente, lo que hago en un reporte es agregar en el layout una variable long char, lo dimensiono como para que ocupe toda la hoja y en la propiedad ALIGNMENT le puse MiddleJustify y lo resuelve bien....

Todas las demás opciones aquí mencionadas son buenas opciones, las tomo a todas y voy enriqueciendo mi conocimiento.


Saludos
Pedro R. G.
Licenciado en Sistemas
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